管理者特権でコマンドラインからプログラムを実行する方法


44

既に昇格されていないコマンドラインにいるときに、昇格された権限でプログラムまたはコマンドを実行する方法はありますか?

プログラムのショートカットをクリックして[ 管理者として実行 ]を選択したときに実行されるアクションとまったく同じです。

runasコマンドは、コマンド、おそらく解決策ではありません-それはパスワードの入力を要求しますが、私はしたいUACのダイアログを。

回答:


14

-それは、このユーティリティのように見える隠しスタート -あなたは/ UACスイッチを使用している場合あなたが望むものを行います。コマンドラインの例を次に示します。

hstart /UAC "notepad.exe"

runasのようにパスワードを要求するのではなく、UACダイアログが表示されます。

ここに画像の説明を入力してください


2
警告:その小さなユーティリティは20ドルです。ポケットが小さい場合は、代わりにRunAdminを使用してください:)
WeGoToMars

これは来アップないWindows 10上で
ます

50

PowerShellでこれを行う方法があります。

PS> Start-Process powershell -Verb runAs

19
うまくいくようです。コマンドラインからは、インスタンスのために行うことができpowershell -Command "Start-Process 'C:\program.exe' -Verb runAs"
marsze

7
これは、正しい/ベストアンサーIMOとしてマークする必要があります-サードパーティのユーティリティなしで動作します。
クリムボ

5
@marszeから構築-Fwiw、最も単純な場合の引数は、単一引用符で囲まれた値(例:)に入りますpowershell -Command "Start-Process 'gvim' 'c:\windows\system32\drivers\etc\hosts' -Verb runAs"。ありがとう!
ルフィン

昇格したコマンドプロンプトの出力を現在実行中のスクリプトにパイプするにはどうすればよいですか?
ウィーラー

@wheeler、私はあなたがそれを行うことができないことはほぼ確実ですが、あなたは終了コードを返すことができます:$p = Start-Process powershell -Verb runAs -ArgumentList "-Command ``"& { ``$Host.SetShouldExit(123) }``"" -PassThru; $p.ExitCode
Rustam

6

Rustam答えに基づいて、次のことができます。

  • su.bat次の1行で、デフォルトの%PATH%のどこかにバッチファイルを作成します。@powershell start -verb runas %*
  • この関数をPowerShell $ profileに追加します。function su {start -verb runas @args}

これsu <command> [parameters]で、どちらのシェルでも発行できます!


2

RunAdminは小さなユーティリティ(150Kb)であり、昇格した権限でコマンドラインからプログラムを実行できます(UACが表示されます)。そして、Hidden Startの反対はfreeareです。


2

これは、Windows 10を含むすべてのプラットフォームで機能します。私のニーズは単純です。パワーが必要な場合は、おそらくアプローチを調整できます。

sudo.cmdLinuxのsudoコマンドにちなんだ名前の小さなスクリプトを思いつきました。それは十分に機能すると考えています。要件、従う手順、およびスクリプトの概要を例とともに示しました。最初の警告。

警告:このコマンドは、デフォルトでWindowsシステムディレクトリで実行されます。cdまずどこか安全な場所に行きたいでしょう。

要件

  • Windows .CMD
    またはcmd-shell から特権を持つ管理者でコマンドを実行します。
  • コマンドで通常のWindows特権チェックが必要
    • つまり、特権アカウントで既にログインしていない限り、コマンドは機能しません。
  • 管理者権限でコマンドを実行し、スクリプト内で呼び出されたときに続行します。そのため、コマンドが完了するまで待ちます。
  • 常に機能するようにシンプルに
  • すでにログインしている場合、毎回パスワードを入力する必要はありません。
    • より良い方法sudo、Linuxで実際のコマンドを実行するときと同じようにパスワードを1回入力できる場合です。

解決策

  1. 渡されたすべての引数を実行するコマンドスクリプトを作成し、 sudo.cmd
  2. コマンドスクリプトへのWindowsショートカットを作成しますsudo.lnk
  3. 入れてsudo、それを見ることができるので、Windowsパスに短いカットを。
  4. ショートカットプロパティを編集し、Start in:パスを空にします。
  5. [ Advanced]ボタンをクリックします-チェックRun as Administrator
  6. Windowsパスでショートカットを有効にし、PATHEXT環境変数vizを使用します。
d:> echo %PATHEXT%
    .lnk;.EXE;.CMD;.BAT;.COM

sudo dirコマンドラインで入力すると、Windowsは

User Account Control

Do you want to allow this app to make changes to this device?

  [YES]  [NO]

アクセス制御ポップアップ。「[ NO]」をクリックしても何も起こりません。Windowsは「Access is denied.」メッセージを表示します。

「[ YES]」をクリックすると、ディレクトリコマンドが昇格された特権で実行されます。もちろん、サービスの停止やクエリなど、もっと興味深いものが必要でしょう。

 sudo sc query SDRSVC

SDRSVCは「Windowsバックアップサービス」のサービス名です。これは、別のCmdウィンドウに次のように表示されます。

  [sudo]

   administrator
  ---------------

  sc query SDRSVC

SERVICE_NAME: SDRSVC
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

  [done]

Press any key to continue . . .

sudo.cmdスクリプト自体は非常に基本的です。私が言ったように、私のニーズは簡単です。テスト用のコードをデプロイしている間、サービスを停止および開始したいだけです。

sudo.cmd

 @echo off
 @rem    sudo.cmd
         cd /d %temp%
 @echo.
 @echo.   administrator
 @echo.  ---------------
         cd 
 @echo.
 @rem  _________________________________________________
 @rem      -- Print usage . . .
        @if    [""]      ==["%~1"]   goto USAGE
        @if /i ["--HELP"]==["%~1"]   goto USAGE
 @rem  _________________________________________________
 @rem
 @echo.  %*
 @rem
         %*
 @rem
         set EXIT_STATUS=%ERRORLEVEL%
 @rem  -- -- -- -- --  
 @echo.
 @echo.  [done]
 @rem  ______________________________________________________
 :Exit
 @echo.
 @pause
  exit /b  %EXIT_STATUS%
 @rem  ______________________________________________________
 :USAGE
 @echo.
 @echo  ^Usage:
 @echo.    sudo ^<complete command line^>
 @echo.
 @echo.  Attempts to rune the: ^<complete command line^>
 @echo.  under Administrator priviliges.  Relies on Windows 
 @echo.  prompt for elevated privileges.
 @rem  ______________________________________________________
 @goto Exit

pauseあなたは結果を確認するためのコマンドを待ちます。あなたは取る場合pauseの管理ウィンドウが閉じて、コマンドが働いていたかどうかは知りません。ERRORLEVELコマンドからはよくとして返されます。


2

これはWindows 10で機能し、他のWindowsバージョンではテストされていません。

昇格されたアクセス許可を要求するpowershellを起動するcmd.exeから管理者権限でメモ帳を開く例。

C:\>start powershell -command "&{start-process -filepath notepad -verb RunAs}"

これにより、[はい] [いいえ]のUACダイアログボックス(有効な場合)が表示されるか、管理者パスワードの入力が求められます。

メモ帳でhostsファイルを開く別の例は次のとおりです。

C:\>start powershell -command "&{start-process -filepath notepad 'C:\Windows\System32\drivers\etc\hosts' -verb RunAs}"

詳細:https : //docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-6


実行可能ファイルへの引数は、-ArgumentListstart-processへの単なる追加パラメーターではなく、パラメーターである必要があります。
Appleshell

0

Start ++を見てください。この機能と他の多くの便利な機能があります。UACプロンプトで実行するには、sudo次に示すようにコマンドラインでプログラム名を使用します。

代替テキスト

その他の機能は次のとおりです(独自の機能を追加することもできます)。

代替テキスト

代替テキスト


見た目も良いのですが、Start ++などと同様の機能を持つFARRを既に使用しています(もちろんsudoを除く)。
ルーカスセノフスキー2009年

2
リンクには、brandontools.comへようこそと表示されています。このWebページは無料で駐車されます。brandontools.comを購入したいですか?
xmojmr

1
@xmojmrが言うように、そのサイトは死んでいます。新しい場所を知っている場合(私はそれほど速く見つけられませんでした)、回答のリンクを更新する必要があります。
アベル

-1

設定できます__COMPAT_LAYER=RunAsAdmin。その後、コマンドは別の管理者特権で実行されますcmd

.bat

rem Run next command elevated to Admin.
set __COMPAT_LAYER=RunAsAdmin
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\{35378EAC-683F-11D2-A89A-00C04FBBCFA2}" /t REG_DWORD /v "NoBackgroundPolicy" /d "1"
rem Disable elevation
set __COMPAT_LAYER=
rem continue non elevated
reg add "HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Internet Explorer\Main" /t REG_SZ /v "Start Page" /d "https://www.google.com" /f

すべての互換モードオプションは、MS Application Compatibility Toolkitにリストされています。


このバッチファイルは恐ろしく壊れています。;コメントの区切り文字として使用することはできません。「バッチファイルはセミコロンを認識しないため、通常、不正なコマンドに関するエラーメッセージが表示されます。」
DavidPostill
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.