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


449

私は常にWindowsコンピューターで管理者以外のアカウントで作業しています。時々、管理者アクセスを必要とするプログラムをインストールする必要があります。私は主にWindowsコマンドプロンプトを使用していますが、Linuxターミナルコマンドと同様に、特権を昇格するWindowsコマンドはありますsudoか?


7
お探しの用語は「昇格された」アクセスだと思います。資格情報には管理者権限がありますが、コマンドを「sudo」するまで、資格情報に基づくプロセスには管理者権限がありません。Windowsでは、「昇格」と呼ばれます。
surfasb 14年

7
@IGRACHは私のシェルではありません...-jiggunjer
1

2
私は、この使用doskey sudo= runas /user:Administrator "cmd /k cd \"%cd%\" & $*"
ウィリアム・

1
Chocolateyパッケージとして利用可能なWindows向けのツールwsudoであるmyを試してくださいsudo
noseratio

回答:


267

runasコマンドをコマンド。

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

ただ走れ:

runas /noprofile /user:Administrator cmd 

管理者としてコマンドシェルを起動するには


22
拡張使用のために、プロファイル(環境変数など)をロードしたい場合があります。その場合、をドロップし/noprofileます。
リチャード

6
これは私のために働いていません。パスワードを入力すると、コマンドプロンプトが閉じます。
ジョナス

55
これは管理者のパスワードを要求していませんか?sudoがパスワードを要求しています!
n611x007

15
残念ながら、これは非常に時代遅れです。 Runas異なる資格情報セットでコマンドを実行するだけです。資格情報には管理者権限がありますが、資格情報の下にあるすべてのプロセスが管理者として実行されるわけではありません。
surfasb 14年

12
runasはUACをバイパスできないため、「期限切れ」の+1。代わりに、Windowsボタンを押してcmdと入力し、Ctrl + Shift + Enterを押します。
メローイエロー

125

今日、「UAC特権昇格でコマンドを実行します。これは、コマンドプロンプト内またはバッチファイルで作業するのに役立ちます」という昇格を発見しましたsudoは異なり、実行中のユーザーを管理者に変更しますが、構文は使用するよりもはるかに簡単で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(ユーザーアカウント制御)を回避またはバイパスすることではなく、それを使用することです。UACが有効になっている限り、プロセスのある時点で何らかのプロンプトを表示する必要があります。プロンプトを完全に取り除く必要がある場合は、UAC無効にする必要があります。

軽減する痛みのポイントは、特定のプロセスを非特権シェルからエスカレートし、それから通常どおり実行することです。これがないと、特権コマンドを試行する前に、右クリック> [管理者として実行]で特権コマンドプロンプトを起動する必要があります。


5
これは、secpol.mscの「プロンプトなしで昇格」で完璧になります。一緒に、彼らは%wheel ALL=(ALL) NOPASSWD: ALLsudo と同じことをします。
sayap

2
@sayap、明確にするために、あなたはこれを意味します:ss64.com/nt/syntax-uac.html
マットウィルキー

5
私がelevate(v1.3.0)で見つけた唯一の問題は、それが昇格しているプログラムからエラーコードを返さないことです。
ケン

4
Sudo.bat:@elevate %*=>利益!
ジョーDF 14年

10
OOTBが欠落している外部ユーティリティであることに言及していただければ幸いです。
Hi-Angel

67

似たようなrunasコマンドを使用することも、SourceForgeでsudoコマンドを追加するWindowsプロジェクトのsudoを確認することもできます。

違いはわずかです:

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

Bobとしてログインし、「runas james acommand」を使用すると、コマンドはJamesによって実行されたかのように実行されるため、Jamesのユーザー設定にアクセスし、ユーザーの変更はJames My Documents&settingsフォルダーなどに移動します。アプリケーションをインストールしています。たとえば、BobではなくJamesとしてインストールされます。

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

違いは重要でない場合もあれば、重要な場合もあり、両方のコマンドが役立つ場合があります。


2
本気ですか?ubuntuでsudoを実行するとき、現在のテーマがである~/.themes場合、sudoで作成されたアプリケーションはにないため、そのテーマにアクセスできず/home/root/.themes、デフォルトのいgtkテーマを使用します。
ハセン2009年

5
@hasen j-コマンドが実行される前に(したがってルートに切り替わる前に)〜/ .themesが評価されるからです。
ジャレッド

1
別の解決策は、GitHubの上でホストされている以外、windosuです:github.com/tehsenaus/windosuは、私はちょうどそれを見つけて、素晴らしい動作しているようです。好きなことは、インストールがとても簡単だということです。「npm install -g windosu」だけです。
Venryx

39

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


素晴らしい-まさに私が探していたもの。コマンドが別のユーザーを持っているので実行したくありませんでした。昇格した特権で実行したいだけです。
orip

この問題にぴったりのソリューションです!誰が乱雑な構文を持つRunasを望んでいますか?
ステーブルドッグ

1
昇格コマンドがウィンドウに組み込まれることをしばしば望んでいました。それは素晴らしいツールです。
ヒンクル

現在、同じ作成者によるElevation PowerToysコレクションがあります。このコレクションは、特に、自己昇格スクリプトの作成に関連しています。
マットウィルキー

1
もちろん@barlopは違います。それはUACの目的に反します。
ヒンクル

29

別のコンソールに切り替える準備ができている場合は、ConEmu(私は著者です)があります。その機能の1つ-1つのConEmuウィンドウで、昇格タブと非昇格タブの両方を実行する機能。タブも異なる資格情報で開始される場合があります。

ユーザーの便宜を図るため、バッチファイルcsudo.cmd(bashに簡単に採用できる)があります。プロジェクトのwikiで詳細な説明を読んでください。簡単に言えば、既存の非昇格タブから何らかのコマンドを実行すると、たとえば

csudo dism /online /enable-feature /featurename:NetFX3 /All /Source:D:\sources\sxs /LimitAccess

ConEmuはdism、新しい昇格されたコンソール/タブで起動します(Vistaでは先行するUACプロンプト、XPではログインボックスが表示されます)。

デフォルトでcsudoは、新しいコンソールを分割して開始します(csudo.cmdコンテンツの編集による変更の場合があります)。

そしてもちろんsudo.cmd、「古典的な」sudo単語が好きなら、名前を変更してもかまいません。

ConEmu / Windowsのsudo


1
csudoはずっと前にConEmuディストリビューションに含まれていました。リンクはまったく必要ありません。
マキシマス14年

ここでの問題は、sudo'dコマンドの実行後、新しいコンソールタブが使用できなくなることです。したがって、昇格したタブで作業を続けることはできず、press enter or esc to exitメッセージを取得するだけです。
ジグガンジャー

1
もちろんできません。Unixでさえ、sudoコマンドが機能した後、高架でない端末に戻ります!あなたは間違った道を進んでいます。
マキシマス

1
1)新しいウィンドウまたはタブを開く場合は、そのままにしておくことをお勧めします。続行するかどうかをユーザーに選択させます。2)Ubuntuで毎回sudoを実行する必要はありません。標高は数分続くと思います。3)このアプリケーションには100万のオプションがありますが、これには何もありませんか?たぶん私は甘やかされています。
ジグガンジャー

24

簡単な方法:

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

sudoPowerShellでコマンドを永続的に有効にします。

使用法:

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

1
この質問に対するpowershellソリューションが大好きです。これは何かを高める最も簡単な方法でなければなりません。既存の.batファイルはPOSHに簡単に変換できます
ミッチェルスクルニク

Windows 10でこのエラーが発生しました:. : File C:\Users\User\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 cannot be loaded because running scripts is disabled on this system.
-sowrov

@sowrov、[この記事](www.faqforge.com/windows/windows-powershell-running-scripts-is-disabled-on-this-system/)を参照してください。デフォルトでは、WindowsインストールではPowerShellスクリプトは無効になっています。このコマンドで有効にする必要がありset-executionpolicy remotesignedます。その他のオプションremotesignedは、公式ドキュメントに記載されています。
バルカンレイヴン

読者は、このpsスクリプトはpowershell -c start -verb runas program.exe機能のラッパーであることに注意してください。また、cmdプロンプトで(このように)昇格できないことに注意してください。Powershellは最高のネイティブオプションです。
ジグガンジャー

powershell envの代わりにcmd.exeでも同じことができますか?powershellはclin​​kを使用して計算せず、clinkウィンドウを使用しても計算しません...
PJJ

20

Windowsでこれを実行している場合、他のいくつかの回答で説明したRun Asコマンドに加えて、マウスでこれを行う方法もあります。

ShiftWindowsでほとんどの実行可能ファイルを右クリックするときにキーを押したままにすると、さらに高度なオプションがいくつかあります。これらの1つは " Run As..."オプションです(Run As AdministratorVista以降では " " と呼ばれます)。

ShellRunAsと呼ばれるRunAsのより高度なバージョンをMicrosoftからダウンロードすることもできます。これには、コマンドラインモードとグラフィカルモードの両方で、アカウントの資格情報を保存できるなど、組み込みのRunAsコマンドが強化されています


4

sudoという便利な名前のチョコレートパッケージがあります。次のコマンドを使用して、chocolateyでパッケージをインストールできます。

choco install -y sudo

その後、使用する必要があるWindows / MSシェルでsudo、期待どおりに使用できます。


3

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

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


surunは素晴らしい仕事をします。ただし、Windows 8および8.1では、デフォルトが理想的ではない場合があります。Windowsのrun as functionを置き換えるため、スタート画面を右クリックしてコマンドプロンプトを起動することはできません。
ウルフ

3

おそらく発見したように、runasは別のユーザーとして実行できますが、昇格はできず、現在のディレクトリ、環境変数、または長いコマンドラインを渡しません。

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


1

作業sudoCygwinのための代替mintty端末は、ユーザのPATHに次のスクリプトを配置することです:

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

私にとって、これは、Windowsのターミナルで作業中vimまたはcygrunsrv作業中のプログラムの特権を昇格させる唯一の実行可能な代替品です。


1

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

@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
これにより、新しいコンソールが作成されます。sudo'dコマンドが完了すると、新しいウィンドウは消えます。したがって、出力を読み取ることさえできません。
ジグガンジャー

悲しいことに、はい。ただし、いくつかの基本的なコマンド(コピー)、GUIツール、またはadmin cmdを開くために使用できます。
チャールズミレット

1

私の見解で最も簡単な解決策は、powershellを使用して作業を行うことです。

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

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

0

次の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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.