私は常にWindowsコンピューターで管理者以外のアカウントで作業しています。時々、管理者アクセスを必要とするプログラムをインストールする必要があります。私は主にWindowsコマンドプロンプトを使用していますが、Linuxターミナルコマンドと同様に、特権を昇格するWindowsコマンドはありますsudo
か?
doskey sudo= runas /user:Administrator "cmd /k cd \"%cd%\" & $*"
私は常にWindowsコンピューターで管理者以外のアカウントで作業しています。時々、管理者アクセスを必要とするプログラムをインストールする必要があります。私は主にWindowsコマンドプロンプトを使用していますが、Linuxターミナルコマンドと同様に、特権を昇格するWindowsコマンドはありますsudo
か?
doskey sudo= runas /user:Administrator "cmd /k cd \"%cd%\" & $*"
回答:
runasコマンドをコマンド。
runas [{/profile|/noprofile}] [/env] [/netonly] [/smartcard] [/showtrustlevels] [/trustlevel] /user:UserAccountName program
ただ走れ:
runas /noprofile /user:Administrator cmd
管理者としてコマンドシェルを起動するには
/noprofile
ます。
Runas
異なる資格情報セットでコマンドを実行するだけです。資格情報には管理者権限がありますが、資格情報の下にあるすべてのプロセスが管理者として実行されるわけではありません。
今日、「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を無効にする必要があります。
軽減する痛みのポイントは、特定のプロセスを非特権シェルからエスカレートし、それから通常どおり実行することです。これがないと、特権コマンドを試行する前に、右クリック> [管理者として実行]で特権コマンドプロンプトを起動する必要があります。
%wheel ALL=(ALL) NOPASSWD: ALL
sudo と同じことをします。
@elevate %*
=>利益!
似たような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ユーザーグループを定義する必要があります。ユーザーは、昇格前に資格情報を提供する必要があります。
違いは重要でない場合もあれば、重要な場合もあり、両方のコマンドが役立つ場合があります。
~/.themes
場合、sudoで作成されたアプリケーションはにないため、そのテーマにアクセスできず/home/root/.themes
、デフォルトのいgtkテーマを使用します。
Script Elevation PowerToysを使用することもできます。
別のコンソールに切り替える準備ができている場合は、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
単語が好きなら、名前を変更してもかまいません。
press enter or esc to exit
メッセージを取得するだけです。
sudo
コマンドが機能した後、高架でない端末に戻ります!あなたは間違った道を進んでいます。
sudoを追加する3つのステップ。
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
sudo
PowerShellでコマンドを永続的に有効にします。
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
. : File C:\Users\User\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 cannot be loaded because running scripts is disabled on this system.
powershell -c start -verb runas program.exe
機能のラッパーであることに注意してください。また、cmdプロンプトで(このように)昇格できないことに注意してください。Powershellは最高のネイティブオプションです。
Windowsでこれを実行している場合、他のいくつかの回答で説明したRun Asコマンドに加えて、マウスでこれを行う方法もあります。
ShiftWindowsでほとんどの実行可能ファイルを右クリックするときにキーを押したままにすると、さらに高度なオプションがいくつかあります。これらの1つは " Run As...
"オプションです(Run As Administrator
Vista以降では " " と呼ばれます)。
ShellRunAsと呼ばれるRunAsのより高度なバージョンをMicrosoftからダウンロードすることもできます。これには、コマンドラインモードとグラフィカルモードの両方で、アカウントの資格情報を保存できるなど、組み込みのRunAsコマンドが強化されています
おそらく発見したように、runasは別のユーザーとして実行できますが、昇格はできず、現在のディレクトリ、環境変数、または長いコマンドラインを渡しません。
Hamilton Cシェルは、それを本物のsuとsudoで解決します。suを使用すると、別のユーザーとしてコマンドを実行できます。sudo(実際にはsuのエイリアス)を使用すると、昇格したコマンドを実行できます。別のユーザーとして昇格して実行することもできます。現在のディレクトリ、環境変数、および長いコマンドラインは、呼び出し元のコンテキストで実行されているsuと、子を開始する新しい資格情報を含む間奏として実行されている自身のコピーとの間の共有メモリハンドシェイクによって渡されます。完全な開示:私は著者です。
このスクリプトは仕事をします:
@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ヘッダーを削除するためにわずかに編集しました
次の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