Windowsのコマンドラインを使用して昇格されたcmdを開く方法は?


109

通常のコマンドラインでコマンドラインを使用して管理者特権のコマンドプロンプトを開くにはどうすればよいですか?

たとえば、使用しましたrunas /username:admin cmdが、開いたコマンドが昇格していないようです。解決策はありますか?


すべての回答を試してみました。ソフトウェアを使用せず、アクションもない最も有用な回答は、stackoverflow.com
a /

回答:


165

私は同じ問題に遭遇し、CMDから管理者としてCMDを開くことができた唯一の方法は、次のことでした:

  1. CMDを開く
  2. 書いpowershell -Command "Start-Process cmd -Verb RunAs"てプレスEnter
  3. 管理者としてCMDを開くように求めるポップアップウィンドウが表示されます

2
いい答えだ。1行のコマンドラインで実行するために使用した追加と編集!
Preet Sangha

1
これを使用してバッチファイルを作成し、windowsフォルダにadmincmd.batとして保存したので、「admincmd」と入力してEnterキーを押すだけで、管理コマンドが開きます(バッチファイルに「 「終了」により、非管理コマンドウィンドウが閉じます)
トニーブリックス

最後にcmd(およびパラメーター)を配置しないでください。コマンドを持っていることは、読みやすさの観点からは奇妙です。
エリックフォッサム

38

ドキュメントによると、Windowsセキュリティモデル...

常に管理者権限を付与するわけではありません。管理者でも、昇格された特権を必要としない非管理タスクを実行するときには、標準の特権で実行されます。

あなたはしている管理権限で、このタスクを作成中にオプション[新規タスクの作成 ]ダイアログ(タスクマネージャ]> [ファイル]> [ファイル名を指定して実行新しいタスク)が、組み込みのない方法コマンドラインを使用して効果的に昇格特権にはありません。

ただし、コマンドラインから権限を昇格するために使用できるサードパーティツール(内部ではWindows APIに依存)があります。

NirCmd

  1. それをダウンロードして解凍します。
  2. nircmdc elevate cmd

ウィンドス

  1. インストール:npm install -g windosunode.jsがインストールされている必要があります)
  2. sudo cmd

3
ありがとう、nircmdc elevate route delete 0.0.0.0 mask 0..0.0 192.168.1.1ようやく働きました。他のrunas /user:...方法では、すでに管理者(強制終了モード)であるにもかかわらず、パスワードの入力を求められました。
Marcos 14

ありがとうnircmdc elevate cmd
tim

4
インストール後nircmd、Linuxのように機能させるには、パスに次の内容のファイルをsudo作成しsudo.batます nircmd elevate %*。次に、たとえば、sudo net stop W3SVC
Kip

1
特にあなたが開発者である場合は、windosuがこれを行う最も簡単で最もエレガントな方法だと思います。私はnixシステムにいるように感じます:D
Emmanuel Mahuni 2017

大好きwindosu:)
Finlay Roelofs

32

私はトップの回答にコメントを追加するのに十分な評判はありませんが、エイリアスの力を使えば、次のように入力するだけで脱出できます。

powershell "start cmd -v runAs"

これはuser3018703の優れたソリューションの短いバージョンです。

powershell -Command "Start-Process cmd -Verb RunAs"

26

ここで他の答えを試した後の簡単な方法

方法1:サードパーティプログラムなし(これを使用しました)

  1. 以下の内容のsudo.bat(好きsudoな名前に 置き換えることができる)というファイルを作成します powershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
  2. sudo.bat内のフォルダに移動しますPATH。意味がわからない場合は、これらのファイルをc:\windows\
  3. これsudoで、[実行]ダイアログ(win+r)またはエクスプローラーのアドレスバーで動作します(これが最良の部分です:))。

方法2:サードパーティプログラムを使用する

  1. NirCmdをダウンロードして解凍します。
  2. 以下の内容のsudo.bat(好きsudoな名前に 置き換えることができる)というファイルを作成します nircmdc elevate cmd /k "cd /d %cd%"
  3. 移動nircmdc.exeし、sudo.batあなたの中のフォルダにPATH。意味がわからない場合は、これらのファイルをc:\windows\
  4. これsudoで、[実行]ダイアログ(win+r)またはエクスプローラーのアドレスバーで動作します(これが最良の部分です:))。

どちらのソリューションでも機能しますが、残念ながらUACダイアログが上部に表示されます(zオーダー)が、フォーカスされません。(Win10x64 v1607 build14393.447でテスト済み)
Ogmios

@Ogmiosはかなり奇妙です。このように開始されない場合、ダイアログは適切に機能しますか?私はそのような問題なしにこれをとても幸せに使ってきました。多分それはあなたが変更した他のいくつかの設定のためでしょうか?
Dheeraj Bhaskar 2016

はい、UACダイアログは他のすべての状況で期待どおりに機能します(私は遭遇しました)。これは唯一の例外です。もちろん、他の方法でシステムを変更しましたが、このダイアログに隠れた影響を与える可能性のあるものは見つかりませんでした。
Ogmios 16

@Ogmios、ごめんなさい、メイト、これを修正するために他にできることは考えられません 他の解決策を試して、自分に適しているかどうかを確認してください。乾杯
Dheeraj Bhaskar

powershellはサードパーティではありませんが、ストックプログラムではないため、目標を達成するためにサードパーティのプログラムを作成しているようです。
undrline

13

私は常に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なしでプログラムを開始します。システムの起動時とバッチファイルで役立ちます(タスクスケジューラを使用)」


8

次のバッチファイルは、昇格されたコマンドプロンプト開き、バッチファイルが呼び出されたディレクトリと同じディレクトリにパスを設定します。

set OLDDIR=%CD%
powershell -Command "Start-Process cmd -ArgumentList '/K cd %OLDDIR%' -Verb RunAs "

5

これを行う私のお気に入りの方法は、http: //technet.microsoft.com/en-us/sysinternals/bb897553にあるSysInternalsのPsExec.exeを使用することです。

.\psexec.exe -accepteula -h -u "$username" -p "$password" cmd.exe

「-h」スイッチは魔法をかけるものです:

-hターゲットシステムがVista以上の場合、アカウントの昇格されたトークン(利用可能な場合)を使用してプロセスを実行します。


1
これを機能させるには、psexec.exeのプロパティを編集し、[互換性]タブで[管理者として実行]をオンにする必要があります。そうしないと、エラーが発生します:PSEXESVCがインストールされていません。しかし、psexecはcmd.exeのタブキーに問題を引き起こします。タブを使用してフォルダ名を完成させることはできません。
Peterが2015

どの環境で試したかわかりませんが、「管理者として実行」設定を変更する必要はありませんでした(リモートマシンでcmd.exeを実行しようとしているのですか?)。また、Tabキーで問題なく、私はでき正常に完了したファイルやフォルダの名前(少なくともWin8.1とWin10上でテストされ、CMDとPowerShellコマンドラインの両方から実行されている)
デビッド・ロドリゲス

Win10を使用して、ローカルで実行しています。なぜそれが私ではなくあなたに起こるのかわからない。nircmdを動作させましたが、タブの問題は発生しません。
Peterが2015

また、タブキーでオートコンプリートできないことにも気づきましたが、少なくともこれにより、別のユーザーのコンテキストで管理者特権のcmdプロンプトが開きます。上記の以前の方法では、試したときに達成できなかったようです。'-h'フラグはすばらしい(Windows 10)。
user1840734

4

/savecredスイッチを使用して、バッチファイルに実際の管理者アカウントの資格情報を保存させます。これにより、最初に資格情報の入力が求められ、暗号化されたパスワードが資格情報マネージャーに保存されます。その後、バッチが実行されるときはすべて、完全な管理者として実行されますが、資格情報マネージャーに暗号化されて保存され、エンドユーザーがパスワードを取得できないため、資格情報の入力は求められません。次のコマンドは、完全な管理者権限で昇格されたCMDを開き、初回のみパスワードを要求します。

START c:\Windows\System32\runas.exe /user:Administrator /savecred cmd.exe

3

Dheeraj Bhaskarワークが提供する両方のソリューションが、残念ながら彼らはになりますUACのトップ(z順序ワイズ)上に表示するダイアログが、ないばかり焦点を当てたので、私はどちらかが必要に、(フォーカスされたウィンドウは、呼び出し側CMD / PowerShellのウィンドウです)マウスをつかんで「はい」をクリックするか、Alt + Shift + Tabを使用してUACウィンドウを選択します。(Win10x64 v1607ビルド14393.447でテスト; UAC = "[...]暗くしない[...]"

次の解決策は2つのファイルを使用するため少し厄介ですが、正しいフォーカス順序が維持されるため、追加のマウス/キーボード操作は必要ありません(UACダイアログを確認する以外に、Alt + Y)。

  1. cmdadm.lnk(ショートカットプロパティ/詳細... /管理者として実行=オン) %SystemRoot%\System32\cmd.exe /k "cd /d"
  2. su.bat @start cmdadm.lnk %cd%

で実行しsuます。


残念ながら再現できません。どちらかのソリューションを使用するときはいつでも。私のUACプロンプトは集中していて、一番上にあります
Dheeraj Bhaskar

3

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から.zipC:\Program Files\elevate、私にそのパスを追加しますPATH

次に、GitBashでサービスをelevate sc stop W3SVCオフにするようなものを実行できますIIS

コマンドを実行するUACと、キーボードコントロールで適切にフォーカスされたダイアログが表示され、ダイアログを受け入れるとシェルに戻ります。


3

..

@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

このスクリプトを「god.cmd」としてsystem32またはパスの宛先に保存します...

e:\ mypictures \でcmdを開き、godと入力すると、資格情報を要求され、管理者と同じ場所に戻ります...


1
powershellはかっこいいですが、モジュールが必要です... im oldscool ...システムが必要なだけです...
jOte-

この昇格方法/トリックは、長いパス/ファイル名でも機能しますか?または、代わりに「%〜snx0」または「%〜dpsnx0」を使用することになっていますか?
script'n'code

2

上記の他のソリューションのいくつかと同様にelevate、昇格したPowerShellウィンドウを実行するバッチファイルを作成し、実行ポリシーをバイパスして、単純なコマンドからバッチファイル、複雑なPowerShellスクリプトまですべてを実行できるようにしました。使いやすいように、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
)

0

一時的な環境変数を使用して、昇格されたショートカット(

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"

)(targetedCmdは管理者特権のコマンドウィンドウで実行されます)

3つのファイルですが、すべての(targetedCmdを含む)サブフォルダーに配置し(フォルダー名をパッチに追加することを忘れないでください)、「start.cmd」の名前を対象の1つの名前に変更できます。

私にとっては、これを行う最もネイティブな方法のように見えますが、cmdには必要なコマンドがありません


上記の解決策をすべて読み、理解しました。私はあなたのステップを理解していません。私は最高の長所と短所を持つソリューションを選択しています。
Dzmitry Lahoda

0

ツールExecElevated.exe(13KB)が機能するかどうかはわかりませんが、機能する可能性があります。または、少なくとも、私と同じようにこのページにアクセスした同様のニーズを持つ他のユーザーには役立ちます(ただし、解決策が見つからなかったため、自分で.Netでツールを作成しました)。

昇格したトークンでアプリケーションを実行します(管理モード)。ただし、確認のためにUACダイアログが表示されます。(UACが無効になっている場合はテストしていない可能性があります)。

また、ツールを呼び出すアカウントにも管理者が必要です。もちろん権利。

使用例:

ExecuteElevated.exe "C:\Utility\regjump.exe HKCU\Software\Classes\.pdf"

2
「これはまだテストされていません」という答えと、「わからない」という答えが好きです
。– Giridhar Karnik

1
リンクが壊れています。
Dzmitry Lahoda

Linkはそのため申し訳ありませんが、再確立
MrCalvin

0

Powershellを使用したDheeraj Bhaskarのメソッドには、Windows 10にPowershellが組み込まれている場合を除いて、スペースが不足しています。

彼のsudo.bat内のコマンドラインは

powershell.exe -Command "Start-Process cmd \"/k cd /d %cd% \" -Verb RunAs"

%cd%の後の余分なスペースに注意してください

;)Frode


0

以下は、エクスプローラーと統合する方法です。Windowsエクスプローラー内のフォルダーを右クリックすると、追加のメニュー項目がポップアップ表示されます。

Windowsエクスプローラーの統合

手順は次のとおりです。

  1. このキーを作成します:\ HKEY_CLASSES_ROOT \ Folder \ shell \ dosherewithadmin
  2. そのデフォルト値を、メニュー項目テキストとして表示したいものに変更します。例 "管理者としてのDOSシェル"
  3. この別のキーを作成します:\ HKEY_CLASSES_ROOT \ Folder \ shell \ dosherewithadmin \ command
  4. デフォルト値をこれに変更します。ipsislitteris:powershell.exe -Command "Start-Process -Verb RunAs 'cmd.exe' -Args '/ k pushd"%1 "'"
  5. 終わった。フォルダーを右クリックすると、他のアイテム内にアイテムが表示されます。

*任意のドライブで機能させるには、cdの代わりにpushdを使用します。:-)


-1

次の構文を使用できます。同じ質問があり、スクリプトが必要であるとは思いませんでした。

runas / profile / user:domain \ username cmd

これは私にとってはうまくいきました、あなたのネットワークでは異なるかもしれません。


-1

次のコマンドを使用してください:runas / noprofile / user:administrator cmd


-2

私はcmdで次のコマンドを使用して簡単に行いました

runas / netonly / user:Administrator \ Administrator cmd

このコマンドを入力した後、管理者パスワードを入力する必要があります(管理者パスワードがわからない場合は、空白のままにしてEnterキーを押すか何かを入力してください)。


私を助けませんでした
Dzmitry Lahoda '14

@DzmitryLahodaあなたが得たエラーについて説明してくれませんか?
Harish Regada

-2

Windows + Xキーを押すと、管理者権限を持つPowershellまたはコマンドプロンプトを選択できるようになります。あなたが管理者であれば動作します。システムがあなたのものでない場合、関数は使用できなくなる可能性があります。


-5

昇格されたcmdを開く方法はいくつかありますが、標準のコマンドプロンプトから操作できるのはメソッドだけです。あなたは単に置く必要はありuserませんusername

runas /user:machinename\adminuser cmd

Microsoftコミュニティから関連するヘルプを参照してください。


4
これは、昇格されたコマンドウィンドウを開いて「whoami」と入力すると、昇格されていないウィンドウと同じ結果になるため、昇格されたコマンドを実行するのと同じではありません。どちらの場合も「whoami / all」を実行すると、まったく同じユーザーのアクセス許可の違いがわかります。
Constantino Cronemberger、2015

-5

runas /user:domainuser@domain cmd昇格したプロンプトを正常に開いたものを使用しました。


別のユーザーの資格情報が必要です。すでに管理者であり、アプリケーションを右クリックして「管理者として実行」を選択し、パスワードが要求されない場合など、昇格された特権で実行したい場合は、確認ダイアログだけで、他に必要なものがあります。私はその答えを探してここに来ましたが、ここにはいないようです。
Paul-Sebastian Manole 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.