「runas」を使用してコマンドプロンプトを別のユーザーとして開きますが、そのコマンドプロンプトは管理者として実行されていません。管理者として実行するにはどうすればよいですか?
更新:Windows Server 2012を使用しています
更新:実行して別のアカウントのcmdを開きました
runas /user:domain\username cmd.exe
次に、この新しいプロンプトでいくつかのコマンドを実行しようとしましたが、これは管理者権限を持っているにもかかわらず、昇格したユーザーとして実行されていません。
こちらをご覧ください: https://superuser.com/questions/42537/is-there-any-Sudo-command-for-windows
それによると、コマンドはadminに対して次のようになります。
runas /noprofile /user:Administrator cmd
残念ながら、これらの答えはすべてポイントを逃しています。
ここには2つのセキュリティコンテキストニュアンスがあり、それらを重複させる必要があります。 -「管理者として実行」-ローカルマシンの実行レベルを変更-「別のユーザーとして実行」-プロセスを実行するユーザー資格情報を選択します。
ワークステーションでUACが有効になっている場合、昇格しない限り実行を拒否するプロセスがあります。ローカルの「管理者」グループのメンバーであるだけでは不十分です。また、サインインしているユーザーに対して代替資格情報を使用することを要件が規定している場合は、代替資格情報および昇格されたプロセスの両方を呼び出すメソッドが必要です。
少し面倒ですが、使用できるとわかったのは次のとおりです。
次のようにSysinternals psexecユーティリティを使用します。
psexec \\ localworkstation -h -i -u domain\otheruser exetorun.exe
最初の昇格は、psexecサービスをプッシュできるようにするために必要です。 -hは、昇格された新しい「リモート」(ローカル)プロセスを実行し、-iはデスクトップと対話します。
おそらくこれよりも簡単な方法がありますか?
スタート->シフト+コマンドプロンプトを右クリックすると、別のユーザーまたは管理者として使用できます
私はこれを1行で行う方法を見つけました:
runas /user:DOMAIN\USER2 /savecred "powershell -c start-process -FilePath \"'C:\\PATH\\TO\\YOUR\\EXECUTABLE.EXE'\" -verb runAs"
ここでいくつかのコツがあります。
1:PowershellをDOMAIN\USER2として実行するようにCMDに指示しています
2:「Start-Process」コマンドをPowershellに渡し、動詞「runAs」を使用してDOMAIN\USER2を管理者/昇格特権モードに昇格させます。
一般的な注意事項として、「FilePath」引数のエスケープ文字mustが存在する必要があります(つまり、「\&\\文字の組み合わせ」)、単一引用符( ')mustはEXEパスを囲む-このように、CMDはFilePathを単一文字列として解釈し、Powershellは単一引用符を使用してFilePathを単一の引数として解釈します。
「RunAs」動詞を使用してPowershell内で昇格する: http://ss64.com/ps/syntax-elevate.html =
Microsoft Sysinternals Suiteからpsexec.exeを使用できます https://docs.Microsoft.com/en-us/sysinternals/downloads/sysinternals-suite
例:
c:\somedir\psexec.exe -u domain\user -p password cmd.exe
Runasは管理者として魔法のようにコマンドを実行するのではなく、資格情報を提供するアカウントとしてコマンドを実行します。管理者アカウントでない場合、runasは気にしません。
GUIを介して動作する手順を提供しています
スタートメニューまたは検索バーで「cmd」を検索し、ファイルの場所を右クリックして開きます。
次に、Shiftキーを押しながら、別の資格情報で開くアプリケーション/プログラムまたはショートカットを右クリックしてください。
詳細については、以下の記事を参照してください http://www.windowscage.com/how-to-run-application-as-different-user-in-windows/
私の場合、私はすでにローカル管理者としてログインしており、CMDをドメイン管理者として実行する必要があったので、私にとってうまくいったのは以下を実行することでしたpowershellウィンドウから:
runas/noprofile/user:DOMAIN\USER "cmd"
メモ帳を開き、次のコードを貼り付けます。
@echo off
powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/c %*'"
@echo on
次に、ファイルをSudo.cmd
として保存します。このファイルをコピーしてC:\Windows\System32
に貼り付けるか、Sudo.cmd
のパスをPATH環境変数に追加します。
コマンドプロンプトを開くと、Sudo start .
のようなものを実行できるようになりました。
コマンドを実行するときにターミナルウィンドウを開いたままにする場合は、メモ帳のコードを次のように変更します。
@echo off
powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k %*'"
@echo on
説明:
powershell -Command
はpowershellコマンドを実行します。
Start-Process
は、プロセス(この場合はコマンドプロンプト)を開始するpowershellコマンドです。
-Verb RunAs
は、adminとしてコマンドを実行します。
-Argument-List
は引数を指定してコマンドを実行します。
引数は'/c %*'
です。 %*
はすべての引数を意味するため、Sudo foo bar
を実行すると、コマンドプロンプトfoo bar
で実行されます。パラメーターはfooとbarであり、%*
はfoo bar
を返すためです。
/c
は、コマンドの終了後にウィンドウを閉じるためのcmdパラメーターです。/k
は、ウィンドウを開いたままにするためのcmdパラメーターです。