質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.40%
コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

Q&A

解決済

3回答

596閲覧

バッチファイルの自動実行を管理者権限で達成したい。(確認ダイアログをださないようにしたい)

saya24

総合スコア243

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

0グッド

0クリップ

投稿2024/05/14 00:14

編集2024/05/14 01:37

実現したいこと

Qiitaの記事:バッチを自動で管理者権限で実行する方法を参考に、自分が作成したバッチファイルの最初に、紹介されていたとおりのステップを追加しました。

@echo off net session >NUL 2>nul if %errorlevel% neq 0 ( @powershell start-process %~0 -verb runas exit )

当該バッチファイルは フォルダ監視ユーティリティ(DirectoryMonitor)からの自動起動なので、管理者権限での実行開始時に確認ダイアログが現れて、処理が中断している状況を避けたいです。

発生している問題・分からないこと

確認ダイアログ
当該バッチファイルに、上記確認を出さず 本質処理へ進行させるための手続きがわかりません。

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

管理者権限 バッチファイル 自動実行のキーワードで検索すると、バッチファイル側に相応の記述をすることで、右クリックで「管理者として実行」を選択せずに済むようになる、との記事を拝見することができますが
実行時に確認ダイアログが現れてくることについての、対策が含めて記載されていない気がしました。

何か誤った対策を選択してしまっているのか、不安になり 今回の問合せとなりました。
別のバッチファイルを用意するとか、色々な記事があって 当方のレベルだと 総合的に何をすればよいのか分からない状態なんです。

何卒よろしくお願い申しあげます。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2024/05/14 01:01

> フォルダ監視ユーティリティからの自動起動 回答未満なのでコメントのみですが、Windows標準ではない、サードパーティ製のある種のセキュリティ製品/ファイルシステムレベルで高度な監視を行うものを運用しているのでしょうか。それ経由で起動しようとしているならば、WEBで検索して得られた一般的な対応だけでは済まない可能性もあります。(済むかもしれませんが、分りません) 一般的な対応をしてもダメな場合があるので、そう言った製品を利用しているのであれば、質問文に追記しましょう。重要な判断要素です。
guest

回答3

0

ベストアンサー

全然別のアプローチですが、タスクスケジューラを使っています。
タスクの作成で、
・全般タブで、「最上位の特権で実行する」をチェック(これが管理者権限を意味する)
・トリガータブでは何もトリガーを指定しない
・操作タブで、やりたい操作を指定(※注)

登録したバッチの起動は、schtasks /run /tn タスク名です。新規ウィンドウが開いてそこで実行されます。
もちろんバッチじゃなくても登録すれば管理者権限で実行されます。
私はcmd.exe自体を登録して、su.batでそれを起動しています。

Windowsで新設される予定のsudoですが、窓の杜の記事を見ると、
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1579041.html
(1) 新しいウィンドウで表示(既定)
(2) 同じウィンドウで結果が表示されるがコマンドとの対話不可
(3) 同じウィンドウでコマンドとの対話しての実行が可能
の3つの動作モードがあるようですが、(1)(2)はバッチファイルで作り込めば上記と同じ方法で可能です。
(3)はバッチスクリプト作成レベルでは無理。

(※注)タスクスケジューラを使ったことがない場合のために多少書いておくと、
・「プログラムの開始」で、バッチファイルのフルパスを指定(or参照ボタンから指定)
・引数があるなら、「引数の追加」欄に記入(出力のリダイレクト指定もここに)
・起動時のカレントディレクトリーをデフォルト以外にしたければ「開始」欄にディレクトリを指定

投稿2024/05/14 01:10

編集2024/05/14 01:38
otn

総合スコア85458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saya24

2024/05/14 01:52

otnさん、いつもご支援をありがとうございます。 この件で教えて頂ければ幸いです、 当方が記載したように、予めコマンドプロンプト冒頭に 相応のステップを追記しているのが現況ですが、予めタスク登録しておき これをトリガ起動する手続きとなると、この追記は 不要ということでしょうか? やってみれば 早いのかもしれませんが...よく関係性がわからなくて 合わせ技なのか否か...が若干迷いが
otn

2024/05/14 02:13

はい。そのpowershellを使う方法の代替案なので、不要です。
otn

2024/05/14 02:20

しかし、こう言う質問が出るということは、その追加記述の意味を理解してないということですかね? 意味を理解していないコマンドを実行するのは止めた方が良いです。 もちろん、全部調べきって100%完璧な理解でなくてもいいのですが、「この記述はこういう意味だろう」レベルの理解は必要です。
saya24

2024/05/14 02:39 編集

今までの対処では POWERSHELL経由の起動ということまでは 理解していました。 ただ、そもそもPOWERWHELLを使ったこともなく...恥ずかしながら 一連のご支援ありがとうございました。今しがた無事希望の動作を達成することができました。
otn

2024/05/14 02:55

この記述の理解はpowershellの機能の理解は不要です。下記の読解は、バッチの知識だけで十分可能です。 ・管理者権限でないとエラーになるコマンド(net session)を実行(表示は不要なのでNULに) ・エラーなら、今は管理者権限でないということなので、このファイル(%0)を、 start-process %~0 -verb runas という管理者権限で実行してるっぽいことをする ・最初のコマンドがエラーでなければバッチが管理者権限で実行されたということなので本来の処理に進む powershellの文字を見た途端に思考停止してしまったということですかね?
guest

0

動作未検証ですがBATを管理者権限で実行させたいでできるかもしれません。

投稿2024/05/14 00:58

can110

総合スコア38337

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2024/05/14 01:10

あ、私の回答だ。
guest

0

今年の2月にwin版のsudoがアナウンスされています

もしくはしょせんwinですからユーザーアカウントの制御設定の変更で、全てを管理者権限で実行するかのどちらかでしょう

投稿2024/05/14 00:41

編集2024/05/14 00:45
yambejp

総合スコア115870

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.40%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問