2009-09-17 09:24:35 +0000 2009-09-17 09:24:35 +0000
463
463
Advertisement

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

Advertisement

私はいつもWindowsコンピュータ上で管理者ではないアカウントで作業をしているのですが、時々、管理者アクセスを必要とするプログラムをインストールする必要があります。時々、管理者アクセスを必要とするプログラムをインストールする必要があります。私はほとんどWindowsのコマンドプロンプトを使用しているので、Linuxのターミナルコマンドsudoのように、権限をエスカレートするためのWindowsコマンドはありますか?

Advertisement

回答 (15)

272
272
272
2009-09-17 09:29:46 +0000

runas ](http://technet.microsoft.com/en-us/library/bb490994.aspx) コマンド。

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

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

runas /noprofile /user:Administrator cmd

を実行するだけです。

128
128
128
2011-04-12 06:42:00 +0000
  • これはコマンドプロンプト内での作業やバッチファイルでの作業に便利です。これはコマンドプロンプトやバッチファイルの中で作業するのに便利です。"_ これは sudo と同じではなく、実行ユーザを Administrator に変更しますが、その構文は runas よりもはるかに使いやすく、カレントディレクトリを保持し、相対パスの使用を可能にします。UAC が有効になっている限り、プロセス中のある種のプロンプトが存在しなければなりません。プロンプトを完全になくしたい場合は、UAC を無効にする.

エレベートが緩和する問題点は、非特権シェルから特定のプロセスをエスカレートさせて、通常通りに実行することです。これがなければ、特権コマンドを実行する前に、right-click > “Run as Administrator” で特権コマンドプロンプトを起動する必要があります。sudo

昇降しているプログラムのエラーコードを返さないという制限があります。

もしあなたの記憶が sudo で行き詰っているなら、Doskey を使ってエイリアスを作成してください: secpol.msc

または PATH のバッチファイル: %wheel ALL=(ALL) NOPASSWD: ALL

Elevate は Johannes Passing によって書かれたサードパーティツールです。11kbのダウンロードで、ポータブル(インストール不要)です。http://code.kliu.org/misc/elevate/ ](https://jpassing.com/)

67
Advertisement
67
67
2009-09-17 09:28:30 +0000

似たようなコマンドである runas コマンドを使うこともできますし、SourceForgesudo for Windows プロジェクトをチェックして、sudo コマンドを追加することもできます。

Bob でログインして “runas james acommand” を実行すると、James が実行したかのようにコマンドが実行され、James のユーザ設定にアクセスし、ユーザの変更は James の My Documents と設定フォルダなどに移動します。そのため、アプリケーションをインストールしている場合には、Bob ではなく James としてインストールされます。任意のユーザーが sudo することができないようにするには、sudo を使用して昇格する権限を持つ通常のユーザーのリストを含む sudoers ユーザーグループを定義する必要があります。

この違いは重要ではない場合もあれば、重要ではない場合もあります。

41
41
41
2009-09-17 13:11:39 +0000

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

30
Advertisement
30
30
2012-10-26 07:52:13 +0000

もしあなたが代替のコンソールに切り替える準備ができているならば、 ConEmu (私が著者です)があります。その特徴の一つは、一つの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 の内容を編集することで変更することができます)。

24
24
24
2012-08-28 10:36:22 +0000

クイックメソッド:

3ステップでsudoを追加します。PowerShellを開きます。

  1. 以下のスクリプトをコピー(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ファイルをスクリプトから保存しました。

**Tip: (私のように) UACポップアップの大ファンではない場合は、以下の内容を .regファイルに保存して実行してください。

19
Advertisement
19
19
2009-09-17 11:22:41 +0000

Windowsでこれを実行しているのであれば、他のいくつかの回答で述べたRunAsコマンドに加えて、マウスで実行する方法もあります。

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

4
4
4
2011-11-17 15:24:50 +0000

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

私がWindows XPを使用していたとき、このアプリは私を大いに助けてくれました。ベータ版】(http://forum.kay-bruns.de/thread/411)はWindows 7で動作します。

3
Advertisement
3
3
2012-09-06 15:01:51 +0000

おそらくお気づきだと思いますが、runasは別のユーザとして実行できますが、昇格はできませんし、カレントディレクトリや環境変数、長いコマンドラインを渡すこともできません。sudo (実際には su のエイリアス) を使うと、昇格したコマンドを実行することができます。現在のディレクトリ、環境変数、長いコマンドラインは、呼び出し元のコンテキストで実行されている su と、新しい資格情報の間奏として実行されている自身のコピーとの間で、共有メモリのハンドシェイクによって渡され、子プロセスが開始されます。完全な開示: 私が著者です。

3
3
3
2018-06-14 18:44:28 +0000

chocolatey のパッケージは sudo という便利な名前のものがあります。以下のコマンドで chocolatey でパッケージをインストールできます:

choco install -y sudo

その後、どのような Windows/MS シェルでも、期待通りに sudo を使うことができます。

3
Advertisement
3
3
2019-11-07 16:12:24 +0000

私は gsudo を書きました。これは *nix sudo のように感じ、いくつかのキラー機能を持っています:

  • タブキーのオートコンプリートを壊すことなく、現在のコンソール(添付)内で実行されます。また、新しいウィンドウで起動するために -n を追加することもできます。(ExitCodes, StdIn/Out/Err Redirection/Capture)
  • Cmd/PowerShell/PowerShell Coreをサポート
  • クレデンシャルキャッシュ。数分以内に何度か gsudo が起動された場合、UAC ポップアップが一度だけ表示されます。

gsudo昇格した権限で指定したコマンドを実行します。

最も関連するgsudo [options] {command} [arguments]:

  • [options]昇格した権限で新しいコンソールでコマンドを起動します(すぐに戻ります)。
  • -n | --new プロセスが終了するのを強制的に待ちます(終了コードを返します)。
  • -w | --wait ローカルシステムアカウントとして実行します(「NT AUTHORITY」)。インストール方法

  • Using Scoop: -s | --system

  • Using Chocolatey: --copyev

  • Manual Install PowerShell -Command "Set-ExecutionPolicy RemoteSigned -scope Process; iwr -useb https://raw.githubusercontent.com/gerardog/gsudo/master/installgsudo.ps1 | iex"

  • Or check the latest release .

1
1
1
2014-11-26 09:45:34 +0000

Cygwinのsudoターミナルの代わりに、以下のスクリプトをユーザのPATHに配置することです:

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

私にとってこれは、Windows上のターミナルで作業している間、minttyvimのようなプログラムの権限を昇格させるための唯一の実行可能な代替手段です。

1
Advertisement
1
1
2017-11-20 19:58:47 +0000

私の見解での最も単純な解決策は、ポータブルであり、UACを使用してユーザーにプロンプトが表示されます仕事をするためにpowerhellを活用することです。

あなたはちょうど任意のシェル(cmdまたはpowerhell)でこれを実行することができます

powershell Start-Process -verb runAs path-to-your.exe "-all -args -in -quotes"
0
0
0
2018-02-01 21:29:20 +0000

以下の vbs スクリプトは、引数に elevation を指定してコマンドを起動することを可能にし、限られた使用例のためにオリジナルの unix の sudo コマンドの動作を真似しています (これは資格情報をキャッシュしませんし、異なる資格情報を持つコマンドを真に実行することを可能にします)。

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

コマンドプロンプト C:\Windows\System32 での使用例

0
Advertisement
0
0
2016-01-10 21:08:24 +0000

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

@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 はこの文脈では “管理者として実行 "を意味し、"他のユーザーとして実行 "ではありません ここから抜粋 と、出力から cscript.exe ヘッダを削除するために少し編集しました

Advertisement