« 環境変数を遅延展開する第3の方法とは? | トップページ | 「別のユーザーとして実行」して「管理者として実行」する。 »

2010年1月15日 (金)

エクスプローラから「別のユーザーとして実行」する。

RunAsコマンドは引数でユーザ名を与えねばならず、エクスプローラから起動してユーザを選択することができません。:-(

PowerShellを使えば、GUIでユーザを選択することができます。

例えば、コマンドラインでは、

RunAsUser.cmd コマンド [引数...]

set x=%*
powershell "start-process -credential $null 'cmd' '/c %x:"=\""%'"

これをコンテキストメニューから利用するには、関連付けに、

HKCR\ファイルタイプ\shell\RunAsUser\command

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "start-process -credential $null 'cmd' '/c \"%1\" %*'"

「送る」から利用するには、ショートカット RunAsUser.lnk のリンク先に、

cmd.exe /v:on /c for /l %n in (1,1,2) do if %n==2 (for %y in (!x!) do powershell "start-process -credential $null 'cmd' '/c \""%~y\""'") else set x=

このとき、コンソール画面が開きますが、それが煩わしいときは、-windowstyle hidden を追加します。

関連付け

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden "start-process -credential $null 'cmd' '/c \"%1\" %*'"

ショートカット

cmd.exe /v:on /c for /l %n in (1,1,2) do if %n==2 (for %y in (!x!) do powershell -windowstyle hidden "start-process -credential $null 'cmd' '/c \""%~y\""'") else set x=

それでも、コンソール画面が一時開きます。そこで、ショートカットの「ウィンドウの大きさ」を「最小化」にしておきます。

« 環境変数を遅延展開する第3の方法とは? | トップページ | 「別のユーザーとして実行」して「管理者として実行」する。 »