2019-07-14

パワフルなヤツを黙らせよ!

管理者権限の必要な複数のアプリケーションをバッチで起動したい!... そんなことがよくある。今までは、DOS スクリプトでバッチファイルを作成し、これを管理者権限を与えたショートカットで実行していた。
尚、ショートカットには、[詳細設定]に "管理者として実行" というオプションがある。

そして今、マシンを入れ替え、マルチモニタの増築ついでに、バッチファイルをランチャーに埋め込みたい!... とふと思ってしまう。すると、バッチファイルにどうやって管理者権限を与えるか?という問題に出くわす。Linux なら、この手の問題で悩むことがあまりないのだけど...
おっと!PowerShell がありがたいオプションを持っていた。Start-Process スレッドで、"-verb runas" を指定すればいい。
しかし、これだけでは、PowerShell のウィンドウが開いて鬱陶しい。
さらに、ありがたいオプションがあった。"-WindowStyle Hidden" を指定すればいい。
例えば、こんな感じでバッチファイルを仕込んでおく...

  powershell start-process hogehoge.bat -WindowStyle Hidden -verb runas

しか~し...
これでもほんの一瞬だけ PowerShell のウィンドウが開きやがる。なんとも中途半端な仕様である。この現象が気になるかどうかは人それぞれであろうが、おいらは気になって眠れそうにない。
ん~... どうやら外部の言語系で黙らせるしかなさそうだ。そして、何を使うか悩んでいると、Win 10 には、VBScript が標準装備されていた。中身がこんな感じの hogehoge.vbs ファイルを作成し、こいつをランチャーに埋め込んで実行することに...

  CreateObject("WScript.Shell").Run "powershell start-process -WindowStyle Hidden hogehoge.bat  -verb runas", 0

末尾の ",0" がおまじない。例えば、おいらが愛用している Rainmeter であれば、こんな感じで埋め込む。

  ...
  [HOGEHOGE_EXECUTE]
  Meter=xxx
  LeftMouseUpAction =!execute ["hogehoge.vbs"]
  ...

ん~... 2段階で実行するのも...
PowerShell は、パワフルなヤツでいろんなことができそうだけど、なんとも中途半端な存在に映ってしまう今日このごろであった...

1 コメント:

アル中ハイマー さんのコメント...

さっそく、つっこまれた!
管理者権限を与えたショートカットを、そのまま埋め込めばいいのでは、と。
例えば、こんな感じで...

[HOGEHOGE_EXECUTE]
Meter=xxx
LeftMouseUpAction =!execute ["hogehoge.lnk"]
...

なぜか?これでは管理者権限がうまく伝わらない。

コメントを投稿