web-dev-qa-db-ja.com

Windows用の「Sudo」コマンドはありますか?

私はいつも自分のWindowsコンピュータの管理者以外のアカウントで作業しています。管理者アクセスが必要なプログラムをインストールしなければならないことがあります。私は主にWindowsのコマンドプロンプトを使用していますが、Linuxの端末コマンドSudoと同様に、特権を昇格するためのWindowsコマンドはありますか。

441
ukanth

runas コマンド。

runas [{/profile|/noprofile}] [/env] [/netonly] [/smartcard] [/showtrustlevels] [/trustlevel] /user:UserAccountName program

とにかく走れ:

runas /noprofile /user:Administrator cmd 

管理者としてシェルを起動する方法

264
Davy Landman

私は 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が有効になっている限り、プロセス内のsomeの時点でhasが何らかのプロンプトを表示します。あなたが完全にプロンプ​​トを出すのをやめる必要があるならば、あなたは UACを無効にする必要があります

問題点が軽減されると、特権のないシェルから特定のプロセスがエスカレートし、その後は通常どおり続行されます。これがないと、特権コマンドを試行する前に、right-click> [管理者として実行]で特権コマンドプロンプトを開始する必要があります。

123
matt wilkie

runas コマンドを使用することもできますが、Windows用の Sudoをチェックすることもできます プロジェクトオーバー SourceForge にSudoコマンドが追加されました。

違いは微妙です:

2人のユーザーがいるとしましょう。 Bobは通常のユーザーで、Jamesは管理者です。

Bobとしてログインして "runas james acommand"を使用すると、コマンドはJamesによって実行された場合と同じように実行されるため、Jamesのユーザー設定にアクセスし、ユーザーの変更はJamesに入りますマイドキュメントあなたがアプリケーションをインストールしているなら、例えば、それはボブとしてではなく、ジェームズとしてインストールされるでしょう。

一方、Bobが "Sudo acommand"を実行した場合、コマンドはまだBobとして実行されますが、権限が昇格されています - Linux Sudoコマンドとまったく同じです。どのユーザーもSudoを実行できないようにするには、Sudoを使用して昇格する権限を持つ一般ユーザーのリストを含むsudoersユーザーグループを定義する必要があります。ユーザーは昇格前に資格情報を提供する必要があります。

時には違いは重要ではない、時にはそれは重要です、そして私は両方のコマンドが役に立つことがあると思います。

67
Simon P Stevens

また、 Script Elevation PowerToys を使用することもできます。

39
Quog

あなたが代替コンソールに切り替える準備ができているなら、 ConEmu があります(私は作者です)。その機能の1つ - 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 Wordが好きなら、Sudo.cmdという名前に変更することができます。

Sudo in ConEmu/Windows

28
Maximus

簡単な方法:

Sudoを追加するための3つのステップ.

  1. 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. ヒット Enter

PowerShellでSudoコマンドが恒久的に有効になります。

使用法:

Sudo <process-name> [param1 [param2 [param3]]]

例:

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
24
vulcan raven

Windowsでこれを実行している場合は、他のいくつかの回答で説明した[別のユーザーとして実行]コマンドに加えて、マウスを使用してこれを実行する方法もあります。

あなたが押した場合 Shift Windowsのほとんどの実行可能ファイルを右クリックすると、いくつかのより高度なオプションが表示されます。その1つが "Run As..."オプションです(Vista以降では "Run As Administrator"と呼ばれると思います)。

Microsoftからより詳細なRunAsのバージョンをダウンロードすることもできます。これは ShellRunAs と呼ばれ、コマンドラインモードとグラフィカルモードの両方で、組み込みのRunAsコマンドを拡張したものです。

20
GAThrawn

ご存知のとおり、runasを使用すると別のユーザーとして実行できますが、昇格することはできず、現在のディレクトリ、環境変数、または長いコマンドラインを渡すことはできません。

Hamilton C Shell は本物のsuとSudoでそれを解決します。 suを使用すると、他のユーザーとしてコマンドを実行できます。 Sudo(実際にはsuのエイリアス)を使用すると、昇格したコマンドを実行できます。別のユーザーとして昇格して実行することもできます。現在のディレクトリ、環境変数、および長いコマンドラインは、呼び出し元のコンテキストで実行されているsuと、その後に子を起動する新しい資格を持つ間奏として実行されている自分自身のコピーの間の共有メモリハンドシェイクによって渡されます。完全開示:私は作者です。

3
Nicole Hamilton

Surun は、ユーザーレジストリを変更したり環境変数を変更したりせずにパスワードを入力せずに、特定のプログラムを管理者権限で実行できる無料のオープンソースアプリケーションです。

私がWindows XPを使っていたとき、このアプリはとても役に立ちます。 ベータ版 はWindows 7で動作します。

3
diimdeep

便利な名前 Sudo を付けたチョコレートパッケージがあります。このコマンドを使ってchocolateyでパッケージをインストールすることができます。

choco install -y Sudo

その後、どんなWindows/MSシェルでも、期待どおりにSudoを使用できます。

3
ypid

CygwinのSudo端末の代わりに使えるminttyは、ユーザーのPATHに次のスクリプトを配置することです。

$!/bin/bash
cygstart --action=runas mintty -e `which bash` -lc \"$@\"

私にとっては、これはWindows上の端末で作業している間にvimcygrunsrvのようなプログラムの特権を高めるための唯一の実行可能な代用品です。

1
karafior

このスクリプトは仕事をします:

@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ヘッダーを削除するようにわずかに編集しました

1
Charles Milette

私の考えでは最も簡単な解決策は、PowerShellを利用して作業を行うことです。これは移植性があり、UACを使用してユーザーにプロンプ​​トを出します。

これは任意のシェル(cmdまたはpowershell)で実行できます。

powershell Start-Process -verb runAs path-to-your.exe "-all -args -in -quotes"
1
twall

次のvbsスクリプトは私のためにトリックをします。 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