通常のコマンドでコマンドラインを使用して昇格したコマンドプロンプトを開く方法を教えてください。
たとえば、私はrunas /username:admin cmd
を使用しますが、開かれた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
Sudo.bat
(Sudo
を任意の名前に置き換えることができます)というファイルを次のコンテンツpowershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
で作成しますSudo.bat
をPATH
のフォルダーに移動します。意味がわからない場合は、これらのファイルをc:\windows\
に移動するだけですSudo
が機能するようになりました(win+r)またはエクスプローラーのアドレスバー(これが最良の部分です:))Sudo.bat
(Sudo
を任意の名前に置き換えることができます)というファイルを次のコンテンツnircmdc elevate cmd /k "cd /d %cd%"
で作成しますnircmdc.exe
およびSudo.bat
をPATH
のフォルダーに移動します。意味がわからない場合は、これらのファイルをc:\windows\
に移動するだけですSudo
が機能するようになりました(win+r)またはエクスプローラーのアドレスバー(これが最良の部分です:))トップアンサーにコメントを追加するほどの評判はありませんが、エイリアスの力を使うと次のように入力するだけで済むようになります。
powershell "start cmd -v runAs"
これはuser3018703優れた解決策の単なる短いバージョンです。
powershell -Command "Start-Process cmd -Verb RunAs"
私はnirsoftプログラム(例えばnircmdc)とsysinternals(例えばpsexec)をいつも使っています。彼らはとても役に立ちます。
しかし、もしあなたがサードパーティのプログラムをやりたくない、あるいはできないのなら、これは別の方法、純粋なウィンドウズです。
簡単な答え:昇格している間は昇格した特権でスケジュールされたタスクを作成でき、昇格していなくても後で呼び出すことができます。
中くらいの長さの答え:タスクを昇格させながら(ただしタスクスケジューラGUIが好きです):
schtasks /create /sc once /tn cmd_elev /tr cmd /rl highest /st 00:00
その後、標高は必要ありません。で呼び出してください。
schtasks /run /tn cmd_elev
長い答え:厄介な詳細がたくさんあります。私のブログエントリを参照してください "UACなしでプログラムを起動します。システムの起動時やバッチファイルで便利です(タスクスケジューラを使用してください)"
次はバッチファイルとして昇格したコマンドプロンプトを開きますパスはバッチファイルが呼び出された場所と同じディレクトリに設定されます
set OLDDIR=%CD%
powershell -Command "Start-Process cmd -ArgumentList '/K cd %OLDDIR%' -Verb RunAs "
私はしばらくの間 Elevate
を使っています。
説明です - This utility executes a command with UAC privilege elevation. This is useful for working inside command prompts or with batch files.
bin.x86-64\elevate.exe
から.Zip
をC:\Program Files\elevate
にコピーし、そのパスをPATH
に追加します。
それからGitBash私はIIS
サービスをオフにするためにelevate sc stop W3SVC
のような何かを実行することができます。
コマンドを実行するとUAC
ダイアログが表示されます。これはキーボードコントロールに的を絞っており、ダイアログを受け入れたときにシェルに戻ります。
/savecred
スイッチを使用して、バッチファイルに実際の管理者アカウントの資格情報を保存させます。これにより、初めて資格情報の入力を求められ、暗号化されたパスワードが資格情報マネージャに保存されます。その後、バッチが実行されるすべての時間において、完全な管理者として実行されますが、資格情報マネージャで暗号化されて保存され、エンドユーザーがパスワードを取得できないため、資格情報の入力を要求されません。以下は、完全な管理者権限を持つ昇格されたCMDを開き、初回のみパスワードの入力を要求します。
START c:\Windows\System32\runas.exe /user:Administrator /savecred cmd.exe
..
@ECHO OFF
SETLOCAL EnableDelayedExpansion EnableExtensions
NET SESSION >nul 2>&1
IF %ERRORLEVEL% NEQ 0 GOTO ELEVATE
GOTO :EOF
:ELEVATE
SET this="%CD%"
SET this=!this:\=\\!
MSHTA "javascript: var Shell = new ActiveXObject('Shell.application'); Shell.ShellExecute('CMD', '/K CD /D \"!this!\"', '', 'runas', 1);close();"
EXIT 1
あなたのsystem32またはあなたのパスが向けているものは何でも……このスクリプトを "god.cmd"として保存してください。
e:\ mypictures \でcmdを開いてgodと入力すると、資格情報を要求され、管理者と同じ場所に戻ります。
上記の他の解決策のいくつかと同様に、実行ポリシーを回避して単純なコマンドからバッチファイル、複雑なPowerShellスクリプトまでを実行できるように、PowerShellウィンドウを昇格させるelevate
バッチファイルを作成しました。使いやすくするために、C:\ Windows\System32フォルダに貼り付けることをお勧めします。
元のelevate
コマンドはタスクを実行し、出力をキャプチャし、生成されたPowerShellウィンドウを閉じてから戻り、キャプチャした出力を元のウィンドウに書き出します。
私は2つのバリエーションelevatep
と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
)
Dheeraj Bhaskarによって提供された両方の解決策はうまくいくが、残念ながらそれらはUACダイアログが上に現れる(z-order-wise)がnot getting フォーカスされている(フォーカスされているウィンドウは呼び出し元のcmd/powershellウィンドウです)したがって、マウスをつかんで "yes"をクリックするか、Alt + Shift + TabでUACウィンドウを選択する必要があります。 (Win10x64 v1607 build14393.447でテスト済み。UAC= "[...]暗くしない[...]"。)
次の解決策は2つのファイルを使用するので少し面倒ですが、正しいフォーカス順を維持するので、追加のマウス/キーボード操作は必要ありません(UACダイアログを確認する以外に)Alt + Y)。
%SystemRoot%\System32\cmd.exe /k "cd /d"
@start cmdadm.lnk %cd%
su
を付けて実行します。
これを行う私のお気に入りの方法は、SysInternalsのPsExec.exeを使用することです。 http://technet.Microsoft.com/ja-jp/sysinternals/bb89755
.\psexec.exe -accepteula -h -u "$username" -p "$password" cmd.exe
"-h"スイッチは魔法のようなものです。
-hターゲットシステムがVista以上の場合、利用可能であればアカウントの昇格したトークンでプロセスを実行します。
一時的な環境変数を昇格したショートカットで使用することができます(
start.cmd
setx valueName_betterSpecificForEachCase %~dp0
"%~dp0ascladm.lnk"
ascladm.lnk(ショートカット)
_ properties\advanced\"run as administrator"=yes
(パスを変更するには、一時的に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"
)(targetsCmdは昇格したcmdウィンドウで実行されます)
それは3ファイルですが、あなたは(サブジェクトフォルダにパッチを適用することを忘れないでください)サブフォルダの中にすべてを置き、ターゲットの一つの名前に "start.cmd"をリネームすることができます。
私にとっては、これはこれを行う最もネイティブな方法のように見えますが、cmdは必要なコマンドを持っていません。
ツール ExecElevated.exe (13KB)でうまくいくかどうかわかりませんが…。あるいは、少なくとも私がやったようにこのページに来た同様のニーズを持つ他の人たちのために役に立つでしょう(しかし私は解決策を見つけることができなかったので私は自分自身でツールを作成しました。
昇格したトークンでアプリケーションを実行します(管理者モード)。しかし、確認するためのUACダイアログが表示されます。 (おそらくUACが無効になっているのであれば、テストしていません)。
ツールを呼び出すアカウントにもadminが必要です。もちろん権利。
使用例
ExecuteElevated.exe "C:\Utility\regjump.exe HKCU\Software\Classes\.pdf"
Windows + Xキーを押すと、Powershellまたはコマンドプロンプトを管理者権限で選択できます。あなたが管理者であれば動作します。システムがあなたのものではない場合、この機能は使用できなくなる可能性があります。