Normal bir cmd'de komut satırlarını kullanarak yükseltilmiş bir komut istemini nasıl açarım?
Örneğin, kullanıyorum runas /username:admin cmd
ama açılan cmd yükseltilmiş gibi görünmüyor! Herhangi bir çözüm var mı?
Normal bir cmd'de komut satırlarını kullanarak yükseltilmiş bir komut istemini nasıl açarım?
Örneğin, kullanıyorum runas /username:admin cmd
ama açılan cmd yükseltilmiş gibi görünmüyor! Herhangi bir çözüm var mı?
Yanıtlar:
Aynı sorunla karşılaştım ve CMD'yi CMD'den yönetici olarak açabilmemin tek yolu aşağıdakileri yapmaktı:
powershell -Command "Start-Process cmd -Verb RunAs"
ve basınEnterBelgelere göre , Windows güvenlik modeli ...
her zaman yönetici ayrıcalıkları vermez. Yöneticiler bile , yükseltilmiş ayrıcalıklar gerektirmeyen idari olmayan görevleri gerçekleştirdiklerinde standart ayrıcalıklar altında çalışırlar.
Yeni görev oluştur iletişim kutusunda ( Görev Yöneticisi> Dosya> Yeni görevi çalıştır ) Bu görevi yönetici ayrıcalıklarıyla oluştur seçeneğine sahipsiniz , ancak komut satırını kullanarak ayrıcalıkları etkili bir şekilde yükseltmenin yerleşik bir yolu yoktur.
Ancak, ayrıcalıkları komut satırından yükseltmek için kullanabileceğiniz bazı üçüncü taraf araçları (dahili olarak Windows API'lerine dayanan) vardır:
nircmdc elevate cmd
npm install -g windosu
( yüklü node.js gerektirir )sudo cmd
nircmdc elevate route delete 0.0.0.0 mask 0..0.0 192.168.1.1
sonunda çalıştı. runas /user:...
Zaten bir yönetici olmasına rağmen bir parola için sorulan diğer yollar (öldürülmüş toplu mod).
nircmdc elevate cmd
nircmd
, bu Linux gibi çalışmak zorunda sudo
, bir oluşturmak sudo.bat
bu içerik ile yolu dosyayı: nircmd elevate %*
. Sonra, örneğin, yapabileceğisudo net stop W3SVC
windosu
:)
sudo.bat
değiştirebilirsiniz) adlı bir dosya oluşturunsudo
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
sudo.bat
bir klasöre gidin PATH
; bunun ne anlama geldiğini bilmiyorsanız, bu dosyalarıc:\windows\
sudo
Çalıştır iletişim kutusunda ( win+r) veya gezgin adres çubuğunda çalışacak (bu en iyi bölüm :))sudo.bat
değiştirebilirsiniz) adlı bir dosya oluşturunsudo
nircmdc elevate cmd /k "cd /d %cd%"
nircmdc.exe
Ve sudo.bat
klasörünüzdeki bir klasöre taşıyın PATH
; bunun ne anlama geldiğini bilmiyorsanız, bu dosyalarıc:\windows\
sudo
Çalıştır iletişim kutusunda ( win+r) veya gezgin adres çubuğunda çalışacak (bu en iyi bölüm :))Her zaman nirsoft programları (örn. Nircmdc) ve sysinternals (örn. Psexec) kullanıyorum. Çok faydalıdırlar.
Ancak bir 3. parti programı istemiyorsanız veya yapamıyorsanız, işte başka bir yol, saf Windows.
Kısa cevap : Yükseltilmiş haldeyken, yükseltilmiş ayrıcalıklara sahip zamanlanmış bir görev oluşturabilirsiniz, daha sonra yükseltilmemişken daha sonra çağırabilirsiniz.
Orta uzunlukta cevap : yükseltilmiş görev oluştururken (ancak görev zamanlayıcı GUI'yi tercih ederim):
schtasks /create /sc once /tn cmd_elev /tr cmd /rl highest /st 00:00
Daha sonra yükseltmeye gerek yok,
schtasks /run /tn cmd_elev
Uzun cevap : Çok fazla kıpır kıpır ayrıntı var; blog yazıma bakın "UAC OLMADAN programı başlat, sistem başlangıcında ve toplu iş dosyalarında yararlı (görev zamanlayıcı kullanın)"
Bunu yapmanın en sevdiğim yolu, http://technet.microsoft.com/en-us/sysinternals/bb897553 adresinde bulunan SysInternals'dan PsExec.exe kullanmaktır.
.\psexec.exe -accepteula -h -u "$username" -p "$password" cmd.exe
"-H" anahtarı sihri yapandır:
-h Hedef sistem Vista veya üzeriyse, işlem varsa hesabın yükseltilmiş belirteciyle çalıştırılır.
/savecred
Anahtarı kullanarak toplu iş dosyasının gerçek yönetici hesabının kimlik bilgilerini kaydetmesini sağlayın. Bu, ilk kez kimlik bilgilerini isteyecek ve ardından şifrelenmiş parolayı kimlik bilgileri yöneticisinde saklayacaktır. Daha sonra, toplu işin sonraki tüm çalıştırmaları için, tam yönetici olarak çalışacak, ancak kimlik bilgileri yöneticisinde şifrelenmiş olarak saklandığı ve son kullanıcı parolayı alamadığı için kimlik bilgileri istenmeyecektir. Aşağıdakiler, tam yönetici ayrıcalıklarına sahip yükseltilmiş bir CMD'yi açmalıdır ve yalnızca ilk seferinde parola istenir:
START c:\Windows\System32\runas.exe /user:Administrator /savecred cmd.exe
Dheeraj Bhaskar işin tarafından sağlanan her iki çözümleri olsa da, ne yazık ki sonuçlanacaktır UAC üst (z sırasını-bilge) gösterilmesini iletişim fakat değil alma odaklı böylece ben de ihtiyaç için, (odaklanmış pencere arayan cmd / Powershell penceresidir) fareyi tutup "evet" e tıklayın veya Alt + Shift + Tab kullanarak UAC penceresini seçin. (Win10x64 v1607 build14393.447'de test edilmiştir; UAC = "[...] karartmayın [...]" .)
Aşağıdaki çözüm, iki dosya kullandığından biraz gariptir, ancak doğru odak sırasını korur, bu nedenle fazladan fare / klavye eylemi gerekmez (UAC iletişim kutusunu onaylamanın yanı sıra: Alt + Y ).
%SystemRoot%\System32\cmd.exe /k "cd /d"
@start cmdadm.lnk %cd%
İle çalıştırın su
.
Bir süredir kullanıyorum Elevate
.
Açıklama - This utility executes a command with UAC privilege elevation. This is useful for working inside command prompts or with batch files.
'İ' bin.x86-64\elevate.exe
den .zip
içine kopyalıyorum C:\Program Files\elevate
ve bu yolu kendi yoluma ekliyorum PATH
.
Sonra GitBash elevate sc stop W3SVC
, IIS
hizmeti kapatmak gibi bir şey çalıştırabilirim .
Komutu çalıştırmak bana UAC
klavye kontrolüyle düzgün şekilde odaklanmış iletişim kutusunu veriyor ve iletişim kutusunu kabul ettiğimde kabuğuma geri dönüyorum.
..
@ECHO OFF
SETLOCAL EnableDelayedExpansion EnableExtensions
NET SESSION >nul 2>&1
IF %ERRORLEVEL% NEQ 0 GOTO ELEVATE
GOTO :EOF
:ELEVATE
SET this="%CD%"
SET this=!this:\=\\!
MSHTA "javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('CMD', '/K CD /D \"!this!\"', '', 'runas', 1);close();"
EXIT 1
bu komut dosyasını system32 içinde "god.cmd" olarak veya yolunuzun yönlendirdiği ...
e: \ mypictures \ 'da bir cmd açarsanız ve tanrı yazarsanız, sizden kimlik bilgilerini isteyecek ve sizi yönetici ile aynı yere geri götürecektir ...
Yukarıdaki diğer çözümlerden bazılarına benzer şekilde elevate
, basit komutlardan toplu iş dosyalarına ve karmaşık PowerShell komut dosyalarına kadar her şeyi çalıştırmayı etkinleştirmek için yürütme politikasını atlayarak yükseltilmiş bir PowerShell penceresi çalıştıran bir toplu iş dosyası oluşturdum . Kullanım kolaylığı için C: \ Windows \ System32 klasörünüze yapıştırmanızı tavsiye ederim.
Orijinal elevate
komut görevini yürütür, çıktıyı yakalar, oluşturulan PowerShell penceresini kapatır ve ardından yakalanan çıktıyı orijinal pencereye yazarak geri döner.
Ben iki varyantı, oluşturulan elevatep
ve elevatex
sırasıyla duraklatma ve daha çalışmaları için PowerShell penceresini açık tutmak.
https://github.com/jt-github/elevate
Ve bağlantımın ölmesi durumunda, işte orijinal yükseltme toplu dosyasının kodu:
@Echo Off
REM Executes a command in an elevated PowerShell window and captures/displays output
REM Note that any file paths must be fully qualified!
REM Example: elevate myAdminCommand -myArg1 -myArg2 someValue
if "%1"=="" (
REM If no command is passed, simply open an elevated PowerShell window.
PowerShell -Command "& {Start-Process PowerShell.exe -Wait -Verb RunAs}"
) ELSE (
REM Copy command+arguments (passed as a parameter) into a ps1 file
REM Start PowerShell with Elevated access (prompting UAC confirmation)
REM and run the ps1 file
REM then close elevated window when finished
REM Output captured results
IF EXIST %temp%\trans.txt del %temp%\trans.txt
Echo %* ^> %temp%\trans.txt *^>^&1 > %temp%\tmp.ps1
Echo $error[0] ^| Add-Content %temp%\trans.txt -Encoding Default >> %temp%\tmp.ps1
PowerShell -Command "& {Start-Process PowerShell.exe -Wait -ArgumentList '-ExecutionPolicy Bypass -File ""%temp%\tmp.ps1""' -Verb RunAs}"
Type %temp%\trans.txt
)
Yükseltilmiş bir kısayolla kullanmak için geçici bir ortam değişkeni kullanabilir (
start.cmd
setx valueName_betterSpecificForEachCase %~dp0
"%~dp0ascladm.lnk"
ascladm.lnk (kısayol)
_ properties\advanced\"run as administrator"=yes
(yol değişikliklerini yapmak için geçici olarak oluşturmanız gerekir env.Variable
)
_ properties\target="%valueName_betterSpecificForEachCase%\ascladm.cmd"
_ properties\"start in"="%valueName_betterSpecificForEachCase%"
ascladm.cmd
setx valueName_betterSpecificForEachCase=
reg delete HKEY_CURRENT_USER\Environment /F /V valueName_betterSpecificForEachCase
"%~dp0fileName_targetedCmd.cmd"
) (hedeflenenCmd yükseltilmiş cmd penceresinde yürütülür)
3 dosya olmasına rağmen, her şeyi (targetCmd dahil) bazı alt klasöre yerleştirebilir (klasörAdı'nı yamalara eklemeyi unutmayın) ve "start.cmd" yi hedefin bir adıyla yeniden adlandırabilirsiniz.
Benim için bunu yapmanın en doğal yolu gibi görünüyor, ancak cmd gerekli komuta sahip değil
ExecElevated.exe (13KB) aracının işi yapacağından emin değilim .... ama olabilir. Ya da en azından benim yaptığım gibi bu sayfaya gelen benzer ihtiyaçları olan başkaları için faydalı olun (ancak çözümü bulamadım, bu yüzden aracı .Net'te kendim oluşturdum).
Yükseltilmiş belirteçli bir uygulamayı yürütür (yönetici modunda). Ancak onaylamak için bir UAC iletişim kutusu alacaksınız! (belki UAC devre dışı bırakıldıysa, test etmediyse).
Ve aracı çağıran hesabın da yöneticisi olmalıdır. tabii ki hakları.
Kullanım örneği:
ExecuteElevated.exe "C:\Utility\regjump.exe HKCU\Software\Classes\.pdf"
Dheeraj Bhaskar'ın Powershell ile yönteminde, en azından Powershell'in Windows 10 enkarnasyonu için eksik bir boşluk var.
Sudo.bat dosyasındaki komut satırı şöyle olmalıdır:
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd% \" -Verb RunAs"
% Cd% sonrasındaki fazladan boşluğa dikkat edin
;) Frode
Explorer ile entegre etmenin bir yolu burada. Windows Gezgini'nde herhangi bir klasöre sağ tıkladığınızda ekstra bir menü öğesi açılır:
İşte adımlar:
* Herhangi bir sürücüde çalışmasına izin vermek için cd yerine pushd kullanın. :-)
Aşağıdaki sözdizimini kullanabilirsiniz, ben de aynı soruyu sormuştum ve bir betik gerekmesi gerektiğini düşünmemiştim.
runas / profil / kullanıcı: etki alanı \ kullanıcı adı cmd
Bu benim için çalıştı, ağınızda farklı olabilir.
Bu aşağıdaki komutu cmd'de kullanarak kolayca yaptım
runas / netonly / kullanıcı: Yönetici \ Yönetici cmd
bu komutu yazdıktan sonra, Yönetici şifrenizi girmeniz gerekir (Yönetici şifrenizi bilmiyorsanız, boş bırakın ve Enter'a basın veya benim için çalışmış bir şey yazın) ..
Yükseltilmiş bir cmd'yi açmanın birkaç yolu vardır, ancak yalnızca yönteminiz standart komut isteminden çalışır. Sadece koymak gerek user
yok username
:
runas /user:machinename\adminuser cmd
Microsoft topluluğundan ilgili yardıma bakın .
runas /user:domainuser@domain cmd
Yükseltilmiş bir istemi başarıyla açan kullandım .