it-swarm.asia

Programı komut satırından yükseltilmiş haklarla çalıştırma

Zaten yükseltilmemiş bir komut satırındayken, bir programı veya komutu yükseltilmiş haklarla çalıştırmanın bir yolu var mı?

Tam olarak programın kısayoluna tıkladığımda gerçekleşecek olan aynı eylemi seçip Yönetici olarak çalıştır .

runas komutu muhtemelen bir çözüm değildir - bir şifre ister, ancak sadece UAC iletişim kutusunu istiyorum.

43
Lukas Cenovsky

Bu yardımcı programa benziyor - Hidden Start -/uac anahtarını kullanırsanız istediğiniz şeyi yapacak. İşte bir örnek komut satırı:

hstart /UAC "notepad.exe"

Bu, runas gibi bir parola istemek yerine UAC iletişim kutusunu açacaktır.

enter image description here

14
JeffP

PowerShell'de bir bunu yapmanın yol vardır:

PS> Start-Process powershell -Verb runAs
47
Rustam

İnşa etmek Rustam 's cevap şunları yapabilirsiniz:

  • Aşağıdaki tek astarla, varsayılan% PATH% 'inizde bir yerde bir su.bat toplu iş dosyası oluşturun: @powershell start -verb runas %*
  • Bu işlevi PowerShell'inize ekleyin $ profile : function su {start -verb runas @args}

Şimdi her iki Shell'de su <command> [parameters] yazabilirsiniz!

4
Nico57

Bu benim için Windows 10 da dahil olmak üzere tüm platformlarda çalışıyor. İhtiyaçlarım basit, belki güce ihtiyacınız olduğunda yaklaşımı uyarlayabilirsiniz.

Linux Sudo komutu için adlandırılmış, Sudo.cmd adında küçük bir komut dosyası buldum. Düşündüğü kadar iyi çalışıyor. Gereksinimleri, izlenecek adımları ve senaryoyu bir örnekle aşağıya doğru çizdim. Önce bir uyarı kelimesi.

WARNING: Komut, varsayılan olarak Windows Sistem dizininde çalışır. Önce güvenli bir yere cd isteyeceksiniz.

gereklilikler:

  • Komutu Yönetici ile pencerelerden ayrıcalıklı olarak çalıştırın.
    veya cmd-Shell.
  • komutundaki normal Windows ayrıcalık kontrollerini gerektirir.
    • Başka bir deyişle, ayrıcalıklı bir hesapla oturum açmadığım sürece komut çalışmaz.
  • Komutu Yönetici izniyle yürütün ve bir komut dosyasında çağrıldığında devam edin. Bu yüzden komutun tamamlanmasını bekleyin.
  • Basit olun ki her zaman işe yarayacak
  • Zaten giriş yaptıysam, her seferinde bir şifre girilmesine gerek yok.
    • Daha iyi bir yöntemi , Linux'ta gerçek Sudo komutunu olduğu gibi bir kez parola girebilseydim olacaktır.

çözelti:

  1. Tüm bağımsız değişkenleri çalıştırmak için bir komut dosyası oluşturun, Sudo.cmd
  2. Komut komut dosyasına bir Windows kısayolu oluşturun: Sudo.lnk.
  3. Sudo kısayolunu pencerelerinize PATH'e koyun, böylece görülebilir.
  4. Kısayol özelliklerini düzenleyin, Start in: yolunu boş bırakın.
  5. [Advanced] düğmesini tıklayın - Kontrol Et Run as Administrator
  6. Windows yolunuzda kısayolları etkinleştirin, PATHEXT ortam değişkenini, viz kullanın.
d:> echo %PATHEXT%
    .lnk;.EXE;.CMD;.BAT;.COM

Komut satırında Sudo dir yazdığınızda, Windows

User Account Control

Do you want to allow this app to make changes to this device?

  [YES]  [NO]

Erişim kontrolü açılır penceresi. "[NO]" üzerine tıklarsanız hiçbir şey olmaz. Windows bir "Access is denied." mesajı gösterecektir.

"[YES]" öğesini tıkladığınızda, dizin komutu yükseltilmiş bir ayrıcalıkta çalışır. Elbette bir hizmette durmak veya sorgulamak gibi daha ilginç bir şey istersiniz:

 Sudo sc query SDRSVC

SDRSVC, "Windows Yedekleme Servisi" nin servis adıdır, bu, ayrı bir Cmd penceresinde aşağıdakileri gösterir:

  [Sudo]

   administrator
  ---------------

  sc query SDRSVC

SERVICE_NAME: SDRSVC
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

  [done]

Press any key to continue . . .

Sudo.cmd betiğinin kendisi çok basit. Dediğim gibi ihtiyaçlarım basit. Test yapmak için kod dağıtırken hizmetleri durdurmak ve başlatmak istiyorum.

Sudo.cmd:

 @echo off
 @rem    Sudo.cmd
         cd /d %temp%
 @echo.
 @echo.   administrator
 @echo.  ---------------
         cd 
 @echo.
 @rem  _________________________________________________
 @rem      -- Print usage . . .
        @if    [""]      ==["%~1"]   goto USAGE
        @if /i ["--HELP"]==["%~1"]   goto USAGE
 @rem  _________________________________________________
 @rem
 @echo.  %*
 @rem
         %*
 @rem
         set EXIT_STATUS=%ERRORLEVEL%
 @rem  -- -- -- -- --  
 @echo.
 @echo.  [done]
 @rem  ______________________________________________________
 :Exit
 @echo.
 @pause
  exit /b  %EXIT_STATUS%
 @rem  ______________________________________________________
 :USAGE
 @echo.
 @echo  ^Usage:
 @echo.    Sudo ^<complete command line^>
 @echo.
 @echo.  Attempts to rune the: ^<complete command line^>
 @echo.  under Administrator priviliges.  Relies on Windows 
 @echo.  Prompt for elevated privileges.
 @rem  ______________________________________________________
 @goto Exit

pause komutu sonuçları incelemenizi bekler. pause öğesini çıkarırsanız, yönetim penceresi kapanır ve komutun çalışıp çalışmadığını bilemezsiniz. Komuttan ERRORLEVEL de döndürülür.

2
will

RunAdmin bir programı komut satırından yükseltilmiş haklarla çalıştırmanıza izin veren küçük bir yardımcı programdır (150Kb) (UAC'yi gösterir). Ve Saklı Başlat'ın karşısında serbesttir.

2
Rigel

Start ++ 'a bir göz atın - bu başka pek çok yararlı şeyle birlikte bu işlevselliğe sahip. UAC İstemiyle çalıştırmak için, burada gösterildiği gibi komut satırında Sudo, sonra program adınızı kullanın:

alt text

İşte diğer bazı özellikler (kendi grubunuzu da ekleyebilirsiniz):

alt text

alt text

0
John T

Bu, Windows 10 için çalışır, diğer Windows sürümleriyle test edilmemiştir.

Yükseltilmiş izinleri isteyen powershell'i başlatan cmd.exe'den yönetici haklarına sahip bir not defteri açma örneği.

C:\>start powershell -command "&{start-process -filepath notepad -verb RunAs}"

Bu size [Evet] [Hayır] ile bir UAC iletişim kutusu (etkinleştirilirse) verir veya sizden yönetici şifresini ister.

Hosts dosyasını notepad ile açmak için başka bir örnek:

C:\>start powershell -command "&{start-process -filepath notepad 'C:\Windows\System32\drivers\etc\hosts' -verb RunAs}"

Daha fazla bilgi: https://docs.Microsoft.com/en-us/powershell/module/Microsoft.powershell.management/start-process?view=powershell-6

0
Alex