[ 新規に投稿する ]

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

これまで、秀丸エディタで.regファイルを編集中する際にカーソル付近のレジストリパスを
regedit.exeで開くためのマクロを自作して使っていたのですが
OSをwin10にしてから上手く動かなくなっていました。
どうもレジストリエディタを起動させるのに管理者権限で実行させる必要があったようで
win8まではUACをOFFにしていたため気が付かなかったのです。
win10でUAC関連が厳しくなり改変の必要が出てきたのですがヘルプを見てもrun(ex)コマンドを
管理者権限で開く方法が見当たりませんでした。
(レジストリを開くアプリはこちらのものを利用しています。https://www.nirsoft.net/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 -ArgumentList /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を使う方法なら秀丸マクロ本体の標準機能で行けるし速度も申し分ないです
ありがとうございました!

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

[ ]

[ 新規に投稿する ]