runコマンドを管理者権限を付与して実行すNo.09799
eamat. さん 18/10/06 16:14
 
いつも便利に使わせていただいてます。

これまで、秀丸エディタで.regファイルを編集中する際にカーソル付近のレジストリ
パスを
regedit.exeで開くためのマクロを自作して使っていたのですが
OSをwin10にしてから上手く動かなくなっていました。
どうもレジストリエディタを起動させるのに管理者権限で実行させる必要があったよ
うで
win8まではUACをOFFにしていたため気が付かなかったのです。
win10でUAC関連が厳しくなり改変の必要が出てきたのですがヘルプを見てもrun(ex)
コマンドを
管理者権限で開く方法が見当たりませんでした。
(レジストリを開くアプリはこちらのものを利用しています。https://www.nirsoft.n
et/utils/regscanner.html)

回避策としてPowerShellを経由してみましたが
run > PowerShell > cmd > RegScanner > regedit とネストが多いせいか動作が遅い
です。
---- test.mac ---
$cmd = "'F:\\RegScanner.exe /regedit'";
$target = "HKEY_CURRENT_USER\\Software";
if (selecting)
 $target = gettext2(seltopcolumn,lineno,selendcolumn,lineno,1);
run "powershell start-process cmd.exe -Verb runas -WindowStyle Hidden -Argum
entList /c," + $cmd + "," + $target + ">nul";
-----------------

runコマンドに管理者権限で起動するオプションを追加してもらうのはセキュリティ
的に難しいでしょうか
例えば上級者設定等で事前に許可されてる場合だけ実行可能とかでもいいのですが

[ ]
RE:09799 runコマンドを管理者権限を付与No.09800
h-tom さん 18/10/06 18:14
 

h-tom です。

>runコマンドに管理者権限で起動するオプションを追加してもらうのはセキュリティ
>的に難しいでしょうか
>例えば上級者設定等で事前に許可されてる場合だけ実行可能とかでもいいのですが
現状でも、COMオブジェクト使えば、管理者権限でアプリケーションを実行できますよ。
(Shellオブジェクトの ShellExecute メソッド)

あと、powershellから起動するのに cmd.exe を経由しなくてもいいのでは?

[ ]
RE:09800 runコマンドを管理者権限を付与No.09802
eamat. さん 18/10/07 10:03
 
h-tom様、お返事ありがとうございます。
マクロやdll便利に使わせていただいています。とても助かります。

> 現状でも、COMオブジェクト使えば、管理者権限でアプリケーションを実行できま
>すよ。
> (Shellオブジェクトの ShellExecute メソッド)
> あと、powershellから起動するのに cmd.exe を経由しなくてもいいのでは?
おお、いつの間にかWSHっぽく使える機能が付いていたんですね、全く不勉強でした。
cmd.exeに関しても全くその通りで投降後に気が付いて悶絶していました。

----- test.mac ------------------------------
$exe = "F:\\RegScanner.exe";
$arg = "/regedit";
$target = "HKEY_CURRENT_USER\\Software";
if (selecting)
 $target = gettext2(seltopcolumn,lineno,selendcolumn,lineno,1);

#objShell = createobject("Shell.Application");
callmethod #objShell, "ShellExecute", $exe, $arg + " " + $target, "", "runas
",0;
endmacro;
---------------------------------------------
ばっちりです

プロンプト基準だとrunas.exeを使用するくらいしか頭になかったので
パスワードの入力なしで管理者昇格するにはPowerShell使うしかないと思い込んでいて
秀丸マクロ.netさんのhmPS.dllなどを試していたんですが
教えていただいたShellExecuteを使う方法なら秀丸マクロ本体の標準機能で行けるし
速度も申し分ないです
ありがとうございました!

余談ですが、こちらの常連さんフォーラムはユーザー間でのコメントも禁止ではない
んですね。
サイトー企画様はどなたも返答が早くくださるものの連休中の返答は期待していませ
んでしたので
思いがけず早期解決ができて助かりました。


[ ]