通常の cmd でコマンド ラインを使用して昇格したコマンド プロンプトを開くにはどうすればよいですか?
たとえば、私は使用していますrunas /username:admin cmd
が、開かれたコマンドは昇格していないようです! 解決策はありますか?
私は同じ問題に遭遇しました.CMDから管理者としてCMDを開くことができた唯一の方法は、次のことでした:
powershell -Command "Start-Process cmd -Verb RunAs"
て押すEnterドキュメントによると、Windows セキュリティ モデルは...
常に管理者権限を付与するわけではありません。管理者でさえ、昇格された特権を必要としない非管理タスクを実行するときは、標準特権で実行されます。
[新しいタスクの作成] ダイアログ ( [タスク マネージャー] > [ファイル] > [新しいタスクの実行] ) に [管理者特権でこのタスクを作成する] オプションがありますが、コマンド ラインを使用して特権を効果的に昇格させる組み込みの方法はありません。
ただし、コマンド ラインから権限を昇格させるために使用できるサード パーティ製ツール (内部的に Windows API に依存) がいくつかあります。
nircmdc elevate cmd
npm install -g windosu
( node.jsがインストールされている必要があります)sudo cmd
私は常に nirsoft プログラム (nircmdc など) と sysinternals (psexec など) を使用しています。彼らはとても役に立ちます。
しかし、サード パーティ プログラムをダウンロードしたくない、またはダウンロードできない場合は、別の方法として純粋な Windows を使用します。
簡単な答え: 昇格中に、昇格されていないときに後で呼び出すことができる、昇格された特権を持つスケジュールされたタスクを作成できます。
中程度の回答: 昇格したときにタスクを作成します (ただし、タスクスケジューラ GUI を好みます):
schtasks /create /sc once /tn cmd_elev /tr cmd /rl highest /st 00:00
その後、昇格は必要なく、次のように呼び出します
schtasks /run /tn cmd_elev
長い答え: 厄介な詳細がたくさんあります。私のブログ エントリ「UAC なしでプログラムを開始、システムの開始時およびバッチ ファイルで役立つ (タスク スケジューラを使用)」を参照してください。
これを行う私のお気に入りの方法は、 http: //technet.microsoft.com/en-us/sysinternals/bb897553 で入手できる SysInternals の PsExec.exe を使用することです。
.\psexec.exe -accepteula -h -u "$username" -p "$password" cmd.exe
「-h」スイッチは、魔法を行うものです。
-h ターゲット システムが Vista 以降の場合、利用可能な場合、アカウントの昇格されたトークンを使用してプロセスを実行します。
Powershell を使用した Dheeraj Bhaskar の方法には、少なくとも Windows 10 の Powershell の化身にはスペースがありません。
彼の sudo.bat 内のコマンドラインは
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd% \" -Verb RunAs"
%cd% の後の余分なスペースに注意してください
;)フロデ
これには本当にクリエイティブな解決策がたくさんあるようですが、Stiegler & Guiが私にとって最も理にかなっていることがわかりました。これを行う方法を検討していましたが、「現在のユーザー」のローカル権限に依存するのではなく、ドメイン管理者の資格情報と組み合わせて使用 していました。
これは私が思いついたものです:
runas /noprofile /user:DomainName\UserName "powershell start cmd -v runas"
冗長に見えるかもしれませんが、管理者パスワードの入力を求めるプロンプトが表示され、昇格したコマンド プロンプトとして表示されます。
上記の他のいくつかのソリューションと同様にelevate
、昇格した PowerShell ウィンドウを実行するバッチ ファイルを作成し、実行ポリシーをバイパスして、単純なコマンドからバッチ ファイル、複雑な PowerShell スクリプトまで、あらゆるものを実行できるようにしました。使いやすいように、C:\Windows\System32 フォルダーに貼り付けることをお勧めします。
元のelevate
コマンドはそのタスクを実行し、出力をキャプチャし、生成された PowerShell ウィンドウを閉じてから戻り、キャプチャした出力を元のウィンドウに書き出します。
elevatep
との 2 つのバリアントを作成しましelevatex
た。これらはそれぞれ、PowerShell ウィンドウを一時停止し、開いたままにして作業を進めます。
https://github.com/jt-github/elevate
リンクが切れた場合に備えて、元の昇格バッチ ファイルのコードは次のとおりです。
@Echo Off
REM Executes a command in an elevated PowerShell window and captures/displays output
REM Note that any file paths must be fully qualified!
REM Example: elevate myAdminCommand -myArg1 -myArg2 someValue
if "%1"=="" (
REM If no command is passed, simply open an elevated PowerShell window.
PowerShell -Command "& {Start-Process PowerShell.exe -Wait -Verb RunAs}"
) ELSE (
REM Copy command+arguments (passed as a parameter) into a ps1 file
REM Start PowerShell with Elevated access (prompting UAC confirmation)
REM and run the ps1 file
REM then close elevated window when finished
REM Output captured results
IF EXIST %temp%\trans.txt del %temp%\trans.txt
Echo %* ^> %temp%\trans.txt *^>^&1 > %temp%\tmp.ps1
Echo $error[0] ^| Add-Content %temp%\trans.txt -Encoding Default >> %temp%\tmp.ps1
PowerShell -Command "& {Start-Process PowerShell.exe -Wait -ArgumentList '-ExecutionPolicy Bypass -File ""%temp%\tmp.ps1""' -Verb RunAs}"
Type %temp%\trans.txt
)
Can use a temporary environment variable to use with an elevated shortcut (
start.cmd
setx valueName_betterSpecificForEachCase %~dp0
"%~dp0ascladm.lnk"
ascladm.lnk (shortcut)
_ properties\advanced\"run as administrator"=yes
(to make path changes you'll need to temporarily create the env.Variable
)
_ properties\target="%valueName_betterSpecificForEachCase%\ascladm.cmd"
_ properties\"start in"="%valueName_betterSpecificForEachCase%"
ascladm.cmd
setx valueName_betterSpecificForEachCase=
reg delete HKEY_CURRENT_USER\Environment /F /V valueName_betterSpecificForEachCase
"%~dp0fileName_targetedCmd.cmd"
) (targetedCmd gets executed in elevated cmd window)
Although it is 3 files ,you can place everything (including targetedCmd) in some subfolder (do not forget to add the folderName to the patches) and rename "start.cmd" to targeted's one name
For me it looks like most native way of doing this ,whilst cmd doesn't have the needed command
このツールを .Net 4.8 ExecElevated.exe、13KB ( VS 2022 ソース プロジェクト) で作成しました。管理者モードで、昇格したトークンを使用してアプリケーションを実行します。ただし、確認のために UAC ダイアログが表示されます。(UACが無効になっている場合はそうではないかもしれませんが、テストしていません)。
また、ツールを呼び出すアカウントにも管理者が必要です。もちろん権利。
使用例:
ExecuteElevated.exe "C:\Utility\regjump.exe HKCU\Software\Classes\.pdf"
runas /user:domainuser@domain cmd
昇格したプロンプトを正常に開いたものを使用しました。
昇格した cmd を開くにはいくつかの方法がありますが、標準のコマンド プロンプトから機能するのはその方法だけです。user
notを入れる必要がありますusername
:
runas /user:machinename\adminuser cmd
Microsoft コミュニティから関連するヘルプを参照してください。