[PR]

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

任意のフォルダから PowerShell を実行する

すいません! 盛大に間違えてましたので修正しました! 恥ずかしい!

「コマンドウィンドウをここで開く」の PowerShell 版です。そんなのコマンドプロンプトのパスを PowerShell にするだけだろっていうのはまあだいたいそのとおりなんですけど。

まず HKCR\Directory\shell\ps\command という感じのレジストリキーを作成します。 Directory は「ファイル フォルダ」のコンテキストメニューなのでお好みで Drive とかも作成してください[1]。あと ps というのはただの文字列で意味はないのでこれも好きに。

このままだとコンテキストメニューの表示は "ps" になるので、 HKCR\Directory\shell\ps キーの「(既定)」に適当な文字を記述しましょう。「PowerShell をここで開く」とか。

あとは下の文字列を HKCR\Directory\shell\ps\command キーの「(既定)」にコピペすれば完了です。ちなみに REG_SZ でいいです。まあ何も考えずにやれば REG_SZ になるんですけど。

C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell -noexit -command pushd "%V"
C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell -noexit -command pushd \"%V\"

コマンドプロンプトだと cmd /s /k pushd "%V" というような感じなので、見事にまんまです。ちなみに PowerShell の pushd は Push-Location コマンドレットのエイリアスなのでコマンドプロンプトのそれとは違うものです。どうでもいいですか。

ところで(というかここからが本題のような)、これを HKCR\Directory\shell\runas\command キーで作成すれば管理者として実行できます。でも runas はコマンドプロンプトに使っていますよね。問題ないならそこに PowerShell のコマンドを書いちゃえばいいんですけど、さすがに完全に PowerShell に移行するには早いと思います。

そこで runas 以外の verb を管理者として実行すればいいわけです[2]。次のように記述すればできます。

C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell -command "& {start powershell -verb runas -argumentlist '-noexit -command pushd `"%V`"'}"
C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell -command start powershell -verb runas -argumentlist \"-noexit -command pushd `\"%V`\"\"

ちなみに、先に触れたようにフォルダのコンテキストメニューのレジストリは他にもあるので、それを利用すれば runas キーを複数作成するのと同じことができそうなのですが、片方しか機能しません。試してみたら Folder キーのほうが優先されるようで、 Directory キーのほうの runas は無かったことにされました。

  1. ^ 「フォルダのコンテキストメニューを追加する4つのレジストリキー」を参照。
  2. ^ 「runas 以外の verb でも管理者として実行する」を参照。

Post a comment

Sponsored Link
Information
Menu
アンケート
Links
Mail Form

名前:
メール:
件名:
本文:

Sponsored Links
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。