web-dev-qa-db-ja.com

管理者として常にプロンプ​​トコマンドを実行する方法を教えてください。

私は開発者として、さまざまな目的でコマンドプロンプトを開く必要があることがよくあります。たとえば、iisresetを使用してローカルWebサーバーを再起動します。

通常、コマンドウィンドウを開く方法は2つあります。

  1. 押す Win「cmd」と入力してを押します。 Enter
  2. エクスプローラを開いている間、 Shift フォルダを右クリックして、[コマンドウィンドウをここで開く]を選択します。

ただし、これらの方法のいずれかでコマンドウィンドウを開くと、自分が資格を持っていると感じるような完全な管理者権限がありません。

I am an administrator, but cmd.exe doesn't know that

管理者専用のアプリケーションを実行するには、この比較的面倒な方法でコマンドラインを開く必要があります。

  1. 押す Win「cmd」と入力します。
  2. メニューが表示されるのを待ちます
  3. キーボードから手を離してマウスに置きます
  4. "cmd.exe"メニュー項目を右クリックし
  5. [管理者として実行]を選択します

これはいくつかの理由で受け入れられません。

  • 私のUsersディレクトリ(承認された手法1のように)または私が入りたいフォルダ(承認された手法2のように)ではなく、ウィンドウは常にC:\ windows\system32に開きます。だから私は行きたい場所を見つけるためにディレクトリを変更しなければならないことがよくあります。
  • このプロセスは私の好みの方法よりも数ミリ秒遅くなります。 1日に数回、残りの私のキャリアのために毎日行われて、それはクリックして待ってディレクトリを変更するのに費やされた最大約10日の損失時間になります。
  • プログラマーとして、無意味なロボット作業を実行することは私に大きな精神的苦痛をもたらします。
  • プログラマーとして、私の手を上げることは私に大きな肉体的苦痛を引き起こす激しい仕事です。

そのため、承認された手法1と2で管理者コマンドプロンプトを開くことができる、独自のソリューションを探しています。

多くのプログラムでは、プロパティメニューからデフォルトの特権レベルを恒久的に変更することができます。コマンドプロンプトはそれらのプログラムの1つではありません。

enter image description here

[コマンドウィンドウをここで開く]コンテキストメニューオプションを使用する場合でも、コマンドウィンドウをデフォルトで管理者として実行するにはどうすればよいですか?

101
Kevin

質問の最初の部分に答えるには、Windowsキーを押して「CMD」と入力すると、ヒットします。 Ctrl + Shift + Enter 管理者として開く。

質問の後半部分に答えるには、以下をメモ帳に貼り付けて、「。reg」拡張子を付けて保存します。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Shell\runas]
@="Open Command Window Here as Administrator"

[HKEY_CLASSES_ROOT\Directory\Shell\runas\command]
@="cmd.exe /s /k pushd \"%V\""

それからファイルを実行します。変更内容をレジストリにマージして、コンテキストメニューにオプションを追加します。 (シフトキーは必要ありません。)

87
Jesse

多くのプログラムでは、プロパティメニューからデフォルトの特権レベルを恒久的に変更することができます。コマンドプロンプトはそれらのプログラムの1つではありません。

Compatibilityタブは、Windowsの実行ファイルのallでは完全に無効になっています。

enter image description here

Windows実行可能ファイルに管理者権限を設定するには、ショートカットを作成してShortcut tab→Advancedを使用する必要があります([スタート]メニューの[コマンドプロンプト]項目は既にショートカットです)。

enter image description here

ウィンドウは常に、C:\ windows\system32で開きます(承認された手法1の場合のように)したり、(承認された手法2のように)入れたいフォルダーではなくします。だから私は行きたい場所を見つけるためにディレクトリを変更しなければならないことがよくあります。

Adminコマンド - プロンプトを開くのであれば、おそらくすでに許可を持っているユーザーアクションではなく、管理者特権が必要なシステムアクションを実行している可能性があるので、これは普通のことです。

Autorunレジストリエントリを追加/編集することで、デフォルトディレクトリをグローバルに設定できます(環境変数を使用するために拡張可能な文字列である必要すらありません)。

REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"Autorun"="cd /d \"%userprofile%\""

さて、あなたがコマンドプロンプト任意の方法を使用を開くときはいつでもあなたのユーザープロファイルディレクトリに自動的にデフォルト(よく、厳密にはchange-directory)になるでしょう。

さらに良いことには、&演算子を使用してコマンドプロンプトを開いたときに自動的に実行されるように他のコマンドを追加することができます(例:cd /d %userprofile% & cls & dir)。さらに、HKLMブランチの下の同じキーに同じ値を設定して、すべてのユーザーに設定することもできます。


UACプロンプトを受け入れる必要があります。残念ながら、(現在は)信頼できるプログラムのUAC「ホワイトリスト」を作成して、コマンドプロンプトを管理者として実行してプロンプトを受け入れる必要がないようにする方法はありません。これはあなたに(a)いくつかの選択肢を残します。

  • UACを完全にオンまたはオフにすることができます(useraccountcontrolsettings.exe
  • Elevator別名Elevate Me または Elevation PowerToy のような特権昇格プログラムを使用できます。
  • 昇格された scheduletask を作成し、それに対する資格情報を(一度)入力してから、タスクへのショートカットを作成します。

前者の場合は、UACを完全に避け、後者の2つの場合は、ショートカットを作成するときに資格情報を1回だけ入力します。

37
Synetech

私が使う解決策は、スタートメニューを開いて 'cmd'と入力してを押すことでコマンドプロンプトを開くことです。 Ctrl+Shift+Enter。これにより、選択したプログラムが管理者として起動されます。

19
Dracs

クリックするたびにCMDをadminとして自動実行するには(追加のショートカットを右クリックしたり作成したりする必要はありません)、これを簡単に修正できます。

  1. レジストリエディタ で、次の場所に移動します。
    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

    • Layersフォルダがない場合、フォルダを作成して名前を付ける必要があります。
      AppCompatFlagsフォルダーを右クリックして選択 New → Key
  2. Layersを右クリックして選択NewString Value新しい文字列値の名前を(CMD.EXE)コマンドプロンプトのフルパスに設定します(例:C:\Windows\System32\cmd.exe)。

  3. 新しい文字列値をダブルクリックして変更し、 "値のデータ"RUNASADMINに設定します。

私は同じ煩さを感じました、そして、これは私のために働きました。

12
Blue

CMD.exeを常に管理者として実行したい場合は、レジストリに以下のregコードを追加してください。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Windows\\System32\\cmd.exe"="~ RUNASADMIN"
"C:\\Windows\\SysWOW64\\cmd.exe"="~ RUNASADMIN"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Windows\\System32\\cmd.exe"="~ RUNASADMIN"
"C:\\Windows\\SysWOW64\\cmd.exe"="~ RUNASADMIN"
11
M Sasan MH

私が使用したツールは他にもあります(Jesseが言及したものに加えて)。

Vistaが最初に登場したとき、Microsoftは " elevate "のpowerToyを発表しました。 Windows 7で動作します。パス環境にドロップすると、通常のコマンドプロンプトから "elevate iisreset"を実行できます(または起動/実行から "elevate cmd"を実行するか、ショートカットを作成することもできます)。

4
Rex

UACなどのすべての悲しみを回避する最も簡単な方法は、最も高い権限を使用してcmd.exeを実行するようにタスクスケジュールエントリを設定することです。トリガーイベントを作成しないでください。また、[設定]タブで[タスクのオンデマンド実行を許可する]チェックボックスがオンになっていることを確認してください。また、[設定]タブで、[タスクが既に実行されている場合は、次のルールが適用される]ドロップダウンが[新しいインスタンスを起動しない]に設定されていることを確認します。

次に、デスクトップにこれへのショートカットを作成してそこから実行するか、ショートカットホットキーを使用するか、ショートカットをタスクバーに固定します。

私は私のWindows 7システム上でそれをしました、そしてそれは完全に機能します。

4
Peter Wills

Cmd.exeをコピーして貼り付け、\ system32 \フォルダの中の "cmda.exe"に名前を変更します(337 KBは大したことではありません...)。 cmda.exeのプロパティの[管理者として実行]オプションはグレー表示されなくなり、常に管理者として実行するように設定できます。これで、2つのコマンドプロンプトが表示されます。1つ目は通常、2つ目は(a)dmin特権です。 「cmda」と入力するのは簡単です。 Win あなたが "cmd"でするように検索バー!

管理者権限のあるコンテキストメニューのcmdについては、cmda.exeがすでにあることを確認し、これを新しい.regファイルに追加して起動します。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\Shell\cmda]
@="Open command window here (Administrator)"
"HasLUAShield"=""
"Extended"=""

[HKEY_CLASSES_ROOT\Directory\Background\Shell\cmda\Command]
@="cmda.exe /s /k pushd \"%V\""

コンテキストメニュー(shift)には同じ2行が表示されます。昇格していないコマンドプロンプトと「(Administrator)」が追加されたコマンドプロンプト。

それでおしまい...

2
Ikana

Jesse Brohinskyに感謝します。

より改良されたバージョンこれには、フォルダ内からopencmdを実行できるようにするバックグラウンドディレクトリも含まれています。また、そのためにあなたは非管理者としてコマンドプロンプトを開くことができます。

AdminApprovalModeを無効にすることもできます。このようにして、あなたが管理者であるときに管理者として実行する必要はありません。 http://helpdeskgeek.com/windows-7/turn-off-admin-approval-mode-in-windows-7/

Windows Registry Editor Version 5.00
;write minus before to unreg example: [-HKEY_CLASSES_ROOT\Directory\Shell\cmdhere]

[HKEY_CLASSES_ROOT\Directory\Shell\cmdhere]
@="Open Command Window Here"

[HKEY_CLASSES_ROOT\Directory\Shell\cmdhere\command]
@="cmd.exe /s /k pushd \"%V\""

[HKEY_CLASSES_ROOT\Directory\Background\Shell\cmdhere]
@="Open Command Window Here"

[HKEY_CLASSES_ROOT\Directory\Background\Shell\cmdhere\command]
@="cmd.exe /s /k pushd \"%V\""

[HKEY_CLASSES_ROOT\Directory\Shell\runas]
@="Open Command Window Here as Administrator"

[HKEY_CLASSES_ROOT\Directory\Shell\runas\command]
@="cmd.exe /s /k pushd \"%V\""

[HKEY_CLASSES_ROOT\Directory\Background\Shell\runas]
@="Open Command Window Here as Administrator"

[HKEY_CLASSES_ROOT\Directory\Background\Shell\runas\command]
@="cmd.exe /s /k pushd \"%V\""
1
ColacX

Cmd.exeへのショートカットを作成し、右クリックしてプロパティを選択し、[ショートカット]タブで[詳細設定]を選択し、[管理者として実行]をオンにします。

1
WinOutreach2

常に管理者としてcmdを実行する最も簡単な方法は、以下のコードで.regファイルを作成することです。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
@="C:\\Windows\\System32\\cmd.exe"="RUNASADMIN"

それをメモ帳などに貼り付けて、.regファイルとして保存します。注:これにより、すべてのユーザーに対してコマンドプロンプトが管理者として実行されます。常に自分のユーザーでのみ管理者として実行するには、HKEY_LOCAL_MACHINEをHKEY_CURRENT_USERに変更するだけです。

1
user281995

Dracsが述べた以外の唯一の他の方法は、UACを完全に無効にすることです。

0
Canadian Luke

以下は私のために働きます

@echo off
:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------

あなたは同じuacプロンプトがrunas adminに確認を得るでしょう..しばらく前にそれを見つけました@ stackexchange

0
sudhi