Windows用の’sudo’コマンドはありますか?

command-line privileges windows

私はいつも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に改名しても構いません

sudo in ConEmu/Windows

32  Maximus  2012-10-26


Quick method:

sudoを追加する3つのステップ

  1. Open PowerShell.

  2. 以下のスクリプトをコピー(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
  1. 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

学習のためのロングメソッド

注: 前述のスクリプトを作成するために、両方の記事のスクリプトをミックスしました。ノートパッドに手でペーストするのではなく、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のポップアップが一度だけ表示されます

gsudo demo

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上のターミナルで作業をしているときに、vimcygrunsrvのようなプログラムの権限を昇格させるための唯一の実行可能な代替手段です

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


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