すでに非昇格コマンドラインにいるときに、昇格したプログラムやコマンドを実行する方法はありますか?
プログラムのショートカットをクリックして「管理者として実行」を選択したときに実行されるのと全く同じ動作です
runas コマンドはおそらく解決策ではないでしょう – パスワードを要求してきますが、私は UAC ダイアログが欲しいだけです
52 Lukas Cenovsky 2009-10-15
このユーティリティ – Hidden Start – /uac スイッチを使えば、あなたが望むようなことをしてくれるようです。以下にコマンドラインの例を示します
hstart /UAC "notepad.exe"
これにより、runasのようにパスワードを要求するのではなく、UACダイアログがポップアップ表示されます
13 JeffP 2009-10-15
PowerShellにはこれを行う方法があります
PS> Start-Process powershell -Verb runAs
62 Rustam 2014-09-17
- デフォルトの %PATH% のどこかに、以下の内容の
su.bat
バッチファイルを作成します
@echo off setlocal set cmd=%* if not defined cmd set cmd=%ComSpec% powershell iex """start -v runas $Env:cmd"""
- この関数をPowerShellに追加する $profile :
function su {start -verb runas @args}
これで、どちらのシェルでも su <command> [parameters]
を発行できるようになりました!
7 Nicolas Melay 2017-09-14
これは、Windows 10を含むすべてのプラットフォーム上で私のために動作します。私のニーズはシンプルで、おそらくあなたが力を必要とする場合は、アプローチを適応させることができます
私はLinuxのsudoコマンドのためにsudo.cmd
という名前の小さなスクリプトを思いつきました。これは十分に機能していると思います。私は、要件、従うべき手順を概説し、スクリプトは、例を使用して下の近くにあります。最初に警告の言葉
警告: このコマンドは、デフォルトでは Windows のシステムディレクトリで実行されます。最初に安全な場所に cd
を移動してください
requirements:
- Windows .CMDまたはcmd-shellから特権を持つ管理者でコマンドを実行します
- コマンドで通常の Windows 特権チェックを必要とします
- 言い換えれば、特権アカウントでログインしていない限り、このコマンドは動作しません
- 管理者権限でコマンドを実行し、スクリプト内で呼び出された場合は続行します。なので、コマンドが完了するのを待ちます
- シンプルであること、それが常に機能するようにすること
- すでにログインしている場合は、毎回パスワードを入力する必要はありません
- Linuxの本当の
sudo
コマンドのように、パスワードを一度で入力できるようになれば、もっと良い方法があると思います
- Linuxの本当の
solution:
- 渡された引数
sudo.cmd
をすべて実行するコマンドスクリプトを作成します - コマンドスクリプトの名前にWindowsのショートカットを作成します。
sudo.lnk
sudo
のショートカットをwindowsのPATHに入れて、それが見えるようにしてください- ショートカットプロパティを編集し、
Start in:
パスを空にする Advanced
]ボタンをクリックしてください —Run as Administrator
にチェックを入れてください- Windowsのパスでショートカットを有効にするには、PATHEXT環境変数を使用します
d:> echo %PATHEXT%
.lnk;.EXE;.CMD;.BAT;.COM
コマンドラインでsudo dir
と入力するとWindowsが表示します
User Account Control
Do you want to allow this app to make changes to this device?
[YES] [NO]
アクセスコントロールのポップアップ。NO
」をクリックしても何も起こりません。Windowsは「Access is denied.
」というメッセージを表示します
YES
]をクリックすると、ディレクトリコマンドが高権限で実行されます。もちろん、サービスの停止や問い合わせなど、もっと面白いことがしたいと思うかもしれません
sudo sc query SDRSVC
SDRSVCは「Windowsバックアップサービス」のサービス名で、これは別のCmdウィンドウに以下のように表示されます
[sudo]
administrator
---------------
sc query SDRSVC
SERVICE_NAME: SDRSVC
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
[done]
Press any key to continue . . .
sudo.cmd
スクリプト自体は非常に基本的なものです。私が言ったように、私のニーズは単純です。テスト用のコードをデプロイしている間に、サービスを停止したり起動したりしたいだけです
sudo.cmd
:
@echo off
@rem sudo.cmd
cd /d %temp%
@echo.
@echo. administrator
@echo. ---------------
cd
@echo.
@rem _________________________________________________
@rem -- Print usage . . .
@if [""] ==["%~1"] goto USAGE
@if /i ["--HELP"]==["%~1"] goto USAGE
@rem _________________________________________________
@rem
@echo. %*
@rem
%*
@rem
set EXIT_STATUS=%ERRORLEVEL%
@rem -- -- -- -- --
@echo.
@echo. [done]
@rem ______________________________________________________
:Exit
@echo.
@pause
exit /b %EXIT_STATUS%
@rem ______________________________________________________
:USAGE
@echo.
@echo ^Usage:
@echo. sudo ^<complete command line^>
@echo.
@echo. Attempts to rune the: ^<complete command line^>
@echo. under Administrator priviliges. Relies on Windows
@echo. prompt for elevated privileges.
@rem ______________________________________________________
@goto Exit
pause
コマンドは結果を確認するために待っています。pause
を取り出すと、管理ウィンドウが閉じてしまい、コマンドがうまくいったかどうかはわかりません。コマンドの ERRORLEVEL
も同様に返されます
3 will 2017-06-06
これはWindows 10で動作しますが、他のWindowsバージョンではテストしていません
昇格した権限を要求する powershell を起動する cmd.exe から管理者権限でメモ帳を開く例
C:\>start powershell -command "&{start-process -filepath notepad -verb RunAs}"
これにより、[Yes] [No]でUACダイアログボックス(有効な場合)が表示されるか、管理者パスワードの入力を求められます
メモ帳でhostsファイルを開く別の例としては、次のようなものがあります
C:\>start powershell -command "&{start-process -filepath notepad 'C:\Windows\System32\drivers\etc\hosts' -verb RunAs}"
3 Alex 2018-03-14
RunAdminは、コマンドラインからプログラムを実行するための小さなユーティリティ(150Kb)です。Hidden Start の対極にあるのが freeare です
2 Ultralisk 2017-01-27
サードパーティのツールを使用せず、PowerShell の実行ポリシーを設定しなくても動作する UAC 昇格を使用してプロセスを実行する別の方法があります
このアプローチでは、Microsoft HTML Application Host (mshta) を使用して、単一のコマンド形式で VBScript スニペットを実行します
mshta vbscript:Execute("Set UAC = CreateObject(""Shell.Application""):
UAC.ShellExecute ""SomeProcess.exe"", ""SomeArguments"", """", ""runas"", 1:close")
2 mschmidt 2020-01-31
__COMPAT_LAYER=RunAsAdmin
を設定します。そうすると、コマンドは別の昇格したcmd
で実行されます
Example .bat
:
rem Run next command elevated to Admin.
set __COMPAT_LAYER=RunAsAdmin
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\{35378EAC-683F-11D2-A89A-00C04FBBCFA2}" /t REG_DWORD /v "NoBackgroundPolicy" /d "1"
rem Disable elevation
set __COMPAT_LAYER=
rem continue non elevated
reg add "HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Internet Explorer\Main" /t REG_SZ /v "Start Page" /d "https://www.google.com" /f
すべての互換モードオプションは、MS Application Compatibility Toolkitに記載されています
1 Michel 2017-01-30
Start++を見てみましょう – この機能と他の多くの便利な機能を備えています。UAC プロンプトで実行するには、ここに示すように、コマンドラインで sudo
を使用してからプログラム名を指定してください
他にもいくつかの機能をご紹介します(ご自身で追加することも可能です)
0 John T 2009-10-15