it-swarm.asia

Windows için herhangi bir 'Sudo' komutu var mı?

Her zaman Windows bilgisayarımda yönetici olmayan bir hesapta çalışıyorum. Bazen yönetici erişimi gerektiren programlar yüklemem gerekiyor. Çoğunlukla Windows komut İstemini kullandığım için, ayrıcalıkları yükseltmek için kullanılan bir Windows komutu var, Linux terminal komutuna benzer Sudo?

435
ukanth

runas komutu.

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

Sadece koş:

runas /noprofile /user:Administrator cmd 

yönetici olarak Shell komutunu başlatmak için

262
Davy Landman

Bugün elevate 'u keşfettim ki bu da "UAC ayrıcalık yükselmesiyle bir komut yürütüyor. Bu komut istemleri içinde veya toplu iş dosyalarında çalışmak için kullanışlıdır." Sudo ile aynı değil, yürüten kullanıcıyı Yönetici olarak değiştirir, ancak sözdizimi runas öğesinden çok daha basittir ve göreceli yolların kullanılmasını sağlayan geçerli dizini tutabilir.

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'in amacı UAC (Kullanıcı Hesabı Denetimi) etrafında çalışmak veya onu atlamak değil, onunla çalışmaktır. UAC etkin olduğu sürece has , some point değerinde bir çeşit Prompt olacak. Tamamen sormadan tamamen kurtulmanız gerekirse, UAC'yi devre dışı bırak .

Ağrı noktası yükselmesi hafifletir, ayrıcalıklı olmayan bir Shell'den belirli bir işlemi arttırıyor ve ardından normal olarak devam ediyor. Bu olmadan, ayrıcalıklı bir komut başlatmanız gerekir. sağ tuşla> "Yönetici Olarak Çalıştır" komutunu kullanmanız gerekir, ayrıcalıklı komutu denemeden önce kolayca komut dosyası yazılamaz.

120
matt wilkie

Benzer bir tür olan runas komutunu kullanabilir veya bir Sudo komutu ekleyen SourceForge üzerinden Sudo for Windows projesini inceleyebilirsiniz.

Fark ince:

Diyelim ki iki kullanıcınız var. Bob normal bir kullanıcı ve James bir yönetici.

Bob olarak giriş yaparsanız ve "runas james acommand" komutunu kullanırsanız, komut James tarafından çalıştırılmış gibi çalıştırılır, böylece James'in kullanıcı ayarlarına erişir ve tüm kullanıcı değişiklikleri James Belgelerim & ayarları klasörlerine gider Bir uygulama yüklüyorsanız, diyelim ki, Bob gibi değil, James olarak yüklenecektir.

Öte yandan Bob "Sudo acommand" yaparsa, komut hala Bob olarak çalıştırılır, ancak yükseltilmiş izinlerle - tıpkı Linux Sudo komutu gibi. Herhangi bir kullanıcının Sudo'yu engellemesini önlemek için, Sudo'yu kullanarak yükseltme izni olan normal kullanıcıların listesini içeren bir sudoers kullanıcı grubu tanımlamanız gerekir. Kullanıcılar, yükseklikten önce hala kimlik bilgileri sağlamalıdır.

Bazen fark önemli değil, bazen önemlidir ve her iki komutun da yararlı olabileceğini düşünüyorum.

66
Simon P Stevens

Ayrıca Script Elevasyon PowerToys 'yi de kullanabilirsiniz.

39
Quog

Alternatif konsollara geçmeye hazırsanız, ConEmu var (ben yazarım). Özelliklerinden biri - bir ConEmu penceresinde hem yükseltilmiş hem de yükseltilmemiş sekmeleri çalıştırma yeteneği. Sekmeler de farklı kimlik bilgileriyle başlatılabilir.

Kullanıcı rahatı için, csudo.cmd (bash'a kolayca uyarlanabilir) bir toplu iş dosyası vardır. project 'in wiki içindeki tam açıklamayı okuyun. Kısacası, var olan yükseltilmemiş sekmeden bazı komutları çalıştırdığınızda, örneğin

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

ConEmu yeni yükseltilmiş konsolda/sekmede dism ile başlayacaktır (Vista'da önceki UAC İstemi ile veya XP'de Login kutusuyla).

Varsayılan olarak csudo bir bölmede yeni konsolu başlatır (csudo.cmd içeriğinin düzenlenmesiyle değişiklik yapılabilir).

Elbette, eğer "klasik" Sudo Word'ü seviyorsanız, Sudo.cmd olarak yeniden adlandırabilirsiniz.

Sudo in ConEmu/Windows

28
Maximus

Hızlı yöntem:

Sudo eklemek için üç adım.

  1. PowerShell'i açın.

  2. Aşağıdaki betiği (Ctrl + C) kopyalayın ve PowerShell'e (Alt + Space + E + P) yapıştırın:

$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. Vurmak Enter.

PowerShell'de Sudo komutunu kalıcı olarak etkinleştirir.

Kullanımı:

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

Örnekler:

Sudo Explorer
Sudo notepad
Sudo powershell
Sudo cmd
Sudo taskmgr
Sudo tasklist
Sudo taskkill /IM Skype.exe /PID 8496

Öğrenme için uzun yöntem:

Not: Yukarıda belirtilen betiği oluşturmak için betiği her iki makaleden de karıştırdım. Komut dosyasını elle not defterine yapıştırmak yerine, Out-File deyimlerini ps1 ve $profile dosyalarını komut dosyasından kaydetmek için ekledim.

İpucu: Çok büyük bir UAC pop-up hayranı değilseniz (benim gibi), aşağıdakileri * .reg dosyasına kaydedin ve çalıştırın:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000000
24
vulcan raven

Bunu Windows'ta yapıyorsanız, birkaç cevapta belirtildiği gibi Farklı Çalıştır komutuna ek olarak, bunu fareyle yapmanın da yolları vardır.

Basılı tutarsanız Shift Windows'taki çoğu yürütülebilir dosyaya sağ tıkladığınızda birkaç gelişmiş seçenek olduğunu fark etmeniz gerekir. Bunlardan biri "Run As..." seçeneği (sanırım Vista'dan itibaren "Run As Administrator" olarak adlandırılıyor).

Ayrıca, RunAs'in Microsoft'tan ShellRunAs adlı daha gelişmiş bir sürümünü de indirebilirsiniz. Bu, hesap bilgilerinin kaydedilmesine izin vermek de dahil olmak üzere hem komut satırında hem de grafik modlarda yerleşik RunAs komutu üzerinde geliştirmeler içerir.

20
GAThrawn

Muhtemelen keşfetmiş olduğunuz gibi, runas başka bir kullanıcı olarak çalışmanıza izin verecektir, ancak yükseklik yapamaz ve mevcut dizinleri, ortam değişkenlerini veya uzun komut satırlarını geçemez.

Hamilton C Shell bunu hakiki bir su ve Sudo ile çözer. su, bir komutu başka bir kullanıcı olarak çalıştırmanıza izin verir; Sudo (aslında suya bir diğer ad) yükseltilmiş bir komut çalıştırmanıza izin verir. Her ikisini de yapabilirsiniz, farklı bir kullanıcı olarak çalışarak yükseltin. Geçerli dizinler, ortam değişkenleri ve uzun komut satırları, arayanın bağlamında çalışan su ile daha sonra çocuğu başlatan yeni kimlik bilgileriyle bağlantılı olarak çalışan bir kopyası arasında paylaşılan bir bellek anlaşması yoluyla geçirilir. Tam açıklama: Ben yazarım.

3
Nicole Hamilton

Surun , bazı programların yönetici haklarıyla çalıştırılmasına izin veren, kullanıcı kayıt defterini değiştirmeden ya da ortam değişkenlerini değiştirmeden şifre sağlamayan ücretsiz, açık kaynaklı bir uygulamadır.

Windows _ kullanırkenXP bu uygulama bana çok yardımcı oluyor. Beta , Windows 7 altında çalışır.

3
diimdeep

Sudo isimli uygun bir çikolata paketi var. Bu komutu kullanarak paketi chocolatey ile kurabilirsiniz:

choco install -y Sudo

Daha sonra kullanmak zorunda olduğunuz Windows/MS Shell'de, beklendiği gibi Sudo kullanabilirsiniz.

3
ypid

Cygwin'in Sudo terminali için çalışan bir mintty değiştirme, aşağıdaki komut dosyasını kullanıcının PATH dizinine yerleştirmek olacaktır:

$!/bin/bash
cygstart --action=runas mintty -e `which bash` -lc \"[email protected]\"

Benim için bu, Windows'ta bir terminalde çalışırken vim veya cygrunsrv gibi programların ayrıcalıklarını yükseltmek için uygun olan tek şeydir.

1
karafior

Bu komut dosyası işi yapar:

@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 olarak kaydedin, sonra onu PATH'inize ekleyin.

Not: runas, bu bağlamda "Yönetici olarak çalıştır" değil, "Yönetici olarak çalıştır" anlamına gelir.

Buradan alındı ​​ ve cscript.exe başlığını çıktıdan kaldırmak için hafifçe düzenlendi

1
Charles Milette

Benim görüşüme göre en basit çözüm, portatif ve UAC kullanarak kullanıcıyı soracak işi yapmak için güç kabuğundan yararlanmaktır.

Bunu sadece herhangi bir Shell'de (cmd veya powershell) çalıştırabilirsiniz.

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

Aşağıdaki vbs betiği benim için hile yapar. Ben C:\Windows\System32 üzerinde koymak

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

Komutta örnek kullanım İstemi Sudo net start service

0
ceztko