windows – 昇格した権利を持つコマンドラインからプログラムを実行する方法

administrator privileges windows

すでに非昇格コマンドラインにいるときに、昇格したプログラムやコマンドを実行する方法はありますか?

プログラムのショートカットをクリックして「管理者として実行」を選択したときに実行されるのと全く同じ動作です

runas コマンドはおそらく解決策ではないでしょう – パスワードを要求してきますが、私は UAC ダイアログが欲しいだけです

  52  Lukas Cenovsky  2009-10-15


ベストアンサー

このユーティリティ – Hidden Start – /uac スイッチを使えば、あなたが望むようなことをしてくれるようです。以下にコマンドラインの例を示します

hstart /UAC "notepad.exe"

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

enter image description here

13  JeffP  2009-10-15


PowerShellにはこれを行う方法があります

PS> Start-Process powershell -Verb runAs

62  Rustam  2014-09-17


Rustam回答を参考にしてください

  • デフォルトの %PATH% のどこかに、以下の内容の su.bat バッチファイルを作成します
@echo off
setlocal
set cmd=%*
if not defined cmd set cmd=%ComSpec%
powershell iex """start -v runas $Env:cmd"""
  • この関数をPowerShellに追加する $profile : function su {start -verb runas @args}

これで、どちらのシェルでも su <command> [parameters] を発行できるようになりました!

7  Nicolas Melay  2017-09-14


これは、Windows 10を含むすべてのプラットフォーム上で私のために動作します。私のニーズはシンプルで、おそらくあなたが力を必要とする場合は、アプローチを適応させることができます

私はLinuxのsudoコマンドのためにsudo.cmdという名前の小さなスクリプトを思いつきました。これは十分に機能していると思います。私は、要件、従うべき手順を概説し、スクリプトは、例を使用して下の近くにあります。最初に警告の言葉

警告: このコマンドは、デフォルトでは Windows のシステムディレクトリで実行されます。最初に安全な場所に cd を移動してください

requirements:

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

solution:

  1. 渡された引数sudo.cmdをすべて実行するコマンドスクリプトを作成します
  2. コマンドスクリプトの名前にWindowsのショートカットを作成します。sudo.lnk
  3. sudoのショートカットをwindowsのPATHに入れて、それが見えるようにしてください
  4. ショートカットプロパティを編集し、Start in:パスを空にする
  5. Advanced]ボタンをクリックしてください — Run as Administratorにチェックを入れてください
  6. Windowsのパスでショートカットを有効にするには、PATHEXT環境変数を使用します
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 も同様に返されます

3  will  2017-06-06


これはWindows 10で動作しますが、他のWindowsバージョンではテストしていません

昇格した権限を要求する powershell を起動する cmd.exe から管理者権限でメモ帳を開く例

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

これにより、[Yes] [No]で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

3  Alex  2018-03-14


RunAdminは、コマンドラインからプログラムを実行するための小さなユーティリティ(150Kb)です。Hidden Start の対極にあるのが freeare です

2  Ultralisk  2017-01-27


サードパーティのツールを使用せず、PowerShell の実行ポリシーを設定しなくても動作する UAC 昇格を使用してプロセスを実行する別の方法があります

このアプローチでは、Microsoft HTML Application Host (mshta) を使用して、単一のコマンド形式で VBScript スニペットを実行します

mshta vbscript:Execute("Set UAC = CreateObject(""Shell.Application""):
UAC.ShellExecute ""SomeProcess.exe"", ""SomeArguments"", """", ""runas"", 1:close")

2  mschmidt  2020-01-31


__COMPAT_LAYER=RunAsAdminを設定します。そうすると、コマンドは別の昇格したcmdで実行されます

Example .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に記載されています

1  Michel  2017-01-30


Start++を見てみましょう – この機能と他の多くの便利な機能を備えています。UAC プロンプトで実行するには、ここに示すように、コマンドラインで sudo を使用してからプログラム名を指定してください

alt text

他にもいくつかの機能をご紹介します(ご自身で追加することも可能です)

alt text

alt text

0  John T  2009-10-15


タイトルとURLをコピーしました