私はいつもWindowsパソコンで管理者ではないアカウントで作業をしています。時々、管理者アクセスを必要とするプログラムをインストールする必要があります。私は主にWindowsのコマンドプロンプトを使用しているので、Linuxのターミナルコマンドsudo
のように、権限をエスカレートするためのWindowsコマンドはありますか?
481 ukanth 2009-09-17
runas コマンド
runas [{/profile|/noprofile}] [/env] [/netonly] [/smartcard] [/showtrustlevels] [/trustlevel] /user:UserAccountName program
Just run:
runas /noprofile /user:Administrator cmd
をクリックして、管理者としてコマンドシェルを起動します
282 Davy Landman 2009-09-17
Elevate – “UAC特権でコマンドを実行します。コマンドプロンプト内やバッチファイルでの作業に便利です。”sudo
と同じではなく、実行ユーザを Administrator に変更しますが、構文は runas
よりもずっと使いやすく、カレントディレクトリを保持し、相対パスの使用を可能にします
Synopsis:
elevate [(-c | -k) [-n] [-u]] [-w] command
Options:
-c Launches a terminating command processor; equivalent to "cmd /c command".
-k Launches a persistent command processor; equivalent to "cmd /k command".
-n When using -c or -k, do not pushd the current directory before execution.
-u When using -c or -k, use Unicode; equivalent to "cmd /u".
-w Waits for termination; equivalent to "start /wait command".
Elevate の目的は UAC (User Account Control) を回避したり、迂回したりすることではありません。UACが有効になっている限り、プロセスのどこかに何らかのプロンプトがあるはずです。プロンプトを完全に取り除く必要がある場合は、UAC を無効にする必要があります
Elevate が緩和する問題点は、非特権シェルから特定のプロセスをエスカレートして、通常通りに実行することです。これがなければ、特権コマンドを実行する前に、右クリック> “Run as Administrator” で特権コマンドプロンプトを起動する必要があります
これは、secpol.msc
の「プロンプトを出さずに昇降する」とうまく機能します。これらを合わせると、sudo の %wheel ALL=(ALL) NOPASSWD: ALL
と同じことができます
既知の制限事項は、昇降しているプログラムからエラーコードを返さないことです
筋肉の記憶がsudoで行き詰っている場合は、Doskeyでエイリアスを作成します。 doskey sudo=elevate -w
またはバッチファイルをPATH: @elevate -w %*
に配置してください
ElevateはJohannes Passingによって書かれたサードパーティ製ツールです。11kbのダウンロードで、ポータブル(インストール不要)です。http://code.kliu.org/misc/elevate/
135 matt wilkie 2011-04-12
runas コマンドを使うこともできますし、sudo for Windows プロジェクトをチェックすることもできます
違いは微妙です
2人のユーザがいるとします。ボブは普通のユーザーで、ジェームスは管理者です
Bob としてログインして “runas james acommand” を使用すると、あたかも James が実行したかのようにコマンドが実行され、James のユーザ設定にアクセスし、ユーザの変更はすべて James の My Documents & settings フォルダなどに移動します。つまり、アプリケーションをインストールする場合は、Bob ではなく James としてインストールされます
一方で Bob が “sudo acommand” を実行した場合、コマンドは Bob として実行されますが、Linux の sudo コマンドと同様に、昇格したパーミッションで実行されます。任意のユーザが sudo を実行できないようにするには、sudoers ユーザグループを定義する必要があります。ユーザは昇格の前に資格情報を提供しなければなりません
違いが重要でない時もあれば、重要な時もありますし、どちらのコマンドも便利だと感じています
68 Simon P Stevens 2009-09-17
また、Script Elevation PowerToysを使用することもできます
41 Quog 2009-09-17
もしあなたが代替のコンソールに切り替える準備ができているなら、ConEmuがあります(筆者)。その特徴の一つは、1つのConEmuウィンドウで昇降タブと非昇降タブの両方を実行できることです。タブは異なる認証情報で起動することもできます
ユーザーが快適に利用できるように、バッチファイル csudo.cmd (これは bash に簡単に採用できるかもしれません) があります。プロジェクトのwikiに詳しい説明があります。簡単に言えば、既存の非昇格タブからコマンドを実行する場合などです
csudo dism /online /enable-feature /featurename:NetFX3 /All /Source:D:\sources\sxs /LimitAccess
ConEmuは新しい高架コンソール/タブ(Vistaでは先行するUACプロンプト、XPではログインボックス)でdism
を起動します
デフォルトでは csudo
はスプリットで新しいコンソールを起動します (csudo.cmd
の内容を編集することで変更することができます)
そして、もちろん「古典的な」sudo
ワードが好きならsudo.cmd
に改名しても構いません
32 Maximus 2012-10-26
Quick method:
sudoを追加する3つのステップ
Open PowerShell.
以下のスクリプトをコピー(Ctrl+C)してPowerShellに貼り付けます(Alt+Space+E+P)
$script_path="$HOME\Documents\Scripts"; if (!(test-path $script_path)) {New-Item -ItemType directory $script_path} if (!(test-path $profile)) { new-item -path $profile -itemtype file -force }". $script_path\sudo.ps1" | Out-File $profile -append; "function sudo(){if (`$args.Length -eq 1){start-process `$args[0] -verb `"runAs`"} if (`$args.Length -gt 1){start-process `$args[0] -ArgumentList `$args[1..`$args.Length] -verb `"runAs`"}}" | Out-File $script_path\sudo.ps1; powershell
- Hit Enter.
PowerShellのsudo
コマンドを永久に有効にします
Usage:
sudo <process-name> [param1 [param2 [param3]]]
Examples:
sudo explorer
sudo notepad
sudo powershell
sudo cmd
sudo taskmgr
sudo tasklist
sudo taskkill /IM Skype.exe /PID 8496
学習のためのロングメソッド
- この記事を読む
- コメントを読んでみてください
- Stephen の git リポジトリ と readme ファイル を見てください
注: 前述のスクリプトを作成するために、両方の記事のスクリプトをミックスしました。ノートパッドに手でペーストするのではなく、Out-File
文を追加してps1
と$profile
ファイルを保存しています
ヒント: もしあなたがUACポップアップの大ファンではない場合(私のように)、以下を*.regファイルに保存して実行してください
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000000
27 vulcan raven 2012-08-28
Windowsでこれを行う場合は、他の回答で述べたRun Asコマンドに加えて、マウスを使ってこれを行う方法もあります
Windows のほとんどの実行ファイルを右クリックしながら Shift キーを押したままにすると、いくつかの高度なオプションがあることに気づくはずです。そのうちの一つが “Run As...
” オプションです (Vista 以降では “Run As Administrator
” と呼ばれていると思います)
また、ShellRunAsと呼ばれる、Microsoft から RunAs のより高度なバージョンをダウンロードすることもできます
19 GAThrawn 2009-09-17
Surunは、ユーザレジストリを変更したり環境変数を変更したりすることなく、パスワードを提供することなく、管理者権限で特定のプログラムを実行できるようにするフリーのオープンソースアプリケーションです
私はWindows XPを使用していたとき、このアプリは私に多くのことを助けてくれます。ベータはWindows 7で動作します
4 diimdeep 2011-11-17
私は、*nix sudo
のような感じで、いくつかのキラー機能を持っているWindows用のsudo、gsudoを書きました
- タブキーのオートコンプリートを壊さずに、現在のコンソール(添付)内で実行します。または、
-n
を追加して新しいウィンドウで起動します - スクリプト上で使用されるすべてのシナリオを確実に処理します。(ExitCodes、StdIn/Out/Err Redirection/Capture)
- Cmd/PowerShell/PowerShell Coreをサポートしています
- クレデンシャルキャッシュ。
gsudo
が数分以内に何度か起動された場合、UACのポップアップが一度だけ表示されます
Usage
gsudo
現在のコンソールで昇降式シェルを開きます
gsudo [options] {command} [arguments]
指定されたコマンドを昇格権限で実行します
最も関連性の高い[options]
-n | --new
昇格した権利を持つ新しいコンソールでコマンドを起動します(すぐに戻ります)-w | --wait
強制的にプロセスが終了するのを待つ(終了コードを返す)-s | --system
Run As Local System account (“NT AUTHORITY_AUTHORITY_SY\STEM”)を実行します--copyev
実行前にすべての環境変数を昇格セッションにコピーします
Installation
- スクープを使って
scoop install gsudo
- チョコラティーを使用して:
choco install gsudo
- Manual Install
PowerShell -Command "Set-ExecutionPolicy RemoteSigned -scope Process; iwr -useb https://raw.githubusercontent.com/gerardog/gsudo/master/installgsudo.ps1 | iex"
- または、最新リリースを確認してください
4 Gerardo Grignoli 2019-11-07
お気づきのように、runasは別のユーザとして実行することができますが、昇降はできず、カレントディレクトリや環境変数、長いコマンドラインを渡すことはできません
Hamilton C shellは本物のsuとsudoを使ってそれを解決します。sudo (実際には su のエイリアスです) は昇格したコマンドを実行することができます。現在のディレクトリ、環境変数、長いコマンドラインは、呼び出し元のコンテキストで実行されている su と、新しい資格情報の間奏として実行されている自身のコピーとの間で、共有メモリのハンドシェイクによって渡され、子プロセスが開始されます。完全な開示: 私が著者です
3 Nicole Hamilton 2012-09-06
sudo という便利な名前の chocolatey パッケージがあります。このコマンドでchocolateyでパッケージをインストールします
choco install -y sudo
そして、どのようなWindows/MSシェルでも、期待通りにsudo
を使うことができます
3 ypid 2018-06-14
私の考えでは、最もシンプルな解決策は powershell を利用して作業を行うことであり、これは移植性が高く、UAC を使用してユーザーにプロンプトを表示します
これをどのシェル(cmd や powershell)でも実行することができます
powershell Start-Process -verb runAs path-to-your.exe "-all -args -in -quotes"
2 twall 2017-11-20
Cygwinのsudo
ターミナルの代わりに使えるsudo
は、次のスクリプトをユーザーのPATHに置くことです
$!/bin/bash
cygstart --action=runas mintty -e `which bash` -lc \"$@\"
私にとっては、Windows上のターミナルで作業をしているときに、vim
やcygrunsrv
のようなプログラムの権限を昇格させるための唯一の実行可能な代替手段です
1 karafior 2014-11-26
このスクリプトは仕事をしてくれます
@echo Set objShell = CreateObject("Shell.Application") > %temp%\sudo.tmp.vbs
@echo args = Right("%*", (Len("%*") - Len("%1"))) >> %temp%\sudo.tmp.vbs
@echo objShell.ShellExecute "%1", args, "", "runas" >> %temp%\sudo.tmp.vbs
@cscript //NoLogo %temp%\sudo.tmp.vbs
sudo.cmd
として保存し、PATHに追加してください
注意: runas
は、この文脈では「管理者として実行」を意味し、「他のユーザとして実行」ではありません
ここから引用、出力からcscript.exeヘッダを削除するために若干編集しました
0 Charles Milette 2016-01-10
以下のvbsスクリプトは、引数にelevationを指定してコマンドを起動することを可能にし、限られた使用例のためにオリジナルのunix sudo
コマンドの動作を真似します(それは資格情報をキャッシュしませんし、異なる資格情報を持つコマンドを真に実行することを可能にします)。私はそれを C:\Windows\System32
に置いてみました
Set objArgs = WScript.Arguments
exe = objArgs(0)
args = ""
IF objArgs.Count >= 2 Then
args = args & objArgs(1)
End If
For it = 2 to objArgs.Count - 1
args = args & " " & objArgs(it)
Next
Set objShell = CreateObject( "WScript.Shell")
windir=objShell.ExpandEnvironmentStrings("%WINDIR%")
Set objShellApp = CreateObject("Shell.Application")
objShellApp.ShellExecute exe, args, "", "runas", 1
set objShellApp = nothing
コマンドプロンプトsudo net start service
での使用例
0 ceztko 2018-02-01
もう一つの選択肢は、TakeCommandの START /ELEVATED …
スイッチです
このスイートの非インタラクティブ版 (TCC-RT) は無料で提供されています。sudo.btm” バッチファイルは次のようになります
@START "" /ELEVATED %*
これは sudo /wait <someprogram> /params
という形式もサポートしています
0 AnrDaemon 2020-03-25
少し前に、カレントディレクトリのコンテキスト内で、昇格した権限でプログラムやコマンドを実行するためのオープンソース sudo
ライクなWindows用CLIツールwsudo
を作成しました。Chocolatey パッケージとして自由に利用できます
ビルドエージェントの設定や sfc /scannow
, dism /online /cleanup-image /restorehealth
のような管理者用のもの、あるいは単にローカルの Chocolatey パッケージ (wasudo cup all -y
など) のインストールや更新によく使っています。使用は自己責任でお願いします
Installation
choco install wsudo
Chocolateyはすでにインストールされている必要があります
Purpose
wsudo
は、Linuxのsudo
のようなWindows用のツールで、管理者ではないシェルのコマンドプロンプトから(Administratorとして)昇格した権限を持つプログラムを起動し、そのカレントディレクトリを保持しています
この実装では、レガシーな Windows スクリプトホスト (CScript
) には依存しません。代わりに、"Start-Process -Wait -Verb runAs ..."
コマンドレットを呼び出すヘルパー PowerShell 5.1 スクリプトを使用します。お使いのシステムには PowerShell 5.x がインストールされている可能性が高いですが、そうでなければ依存関係としてインストールするように勧められます
Usage
wsudo
は、カレントディレクトリ内で昇格した権限を持つプログラムやインラインコマンドを実行します。例
wsudo .\myAdminScript.bat
wsudox "del C:\Windows\Temp\*.* && pause"
wasudo cup all -y
wasudox start notepad C:\Windows\System32\drivers\etc\hosts
私はよく Windows の実行ボックス (Win+R) から起動するか、Windows エクスプローラのアドレスバーに wasudo
Enter と入力して起動します (Alt+D)。後者は、エクスプローラのカレントフォルダにある管理者コマンドプロンプトを開きます
詳細については、GitHub reproをご覧ください
0 community wiki 2020-06-26