Windows 7'de yarasa komut dosyasıyla yönetici olarak çalıştırmak için exe seçeneğini değiştirin


3

Windows 7'de UAC'yi devre dışı bırakamıyorum ve değiştirmek istiyorum .exe yönetici olarak çalıştırma seçeneği. Simgesine sağ tıklayabilirim ve uyumluluğa geçebilirim, sonra bu seçeneği GUI ile değiştirebilirim.


Böyle bir olasılığın Windows 7'de bile olması gerektiğine inanmıyorum. Programatik olarak hakların yükseltilmesi, Windows XP'nin yapmanıza izin verdiği ve potansiyel olarak kötü amaçlı yazılımlar tarafından sömürülebilecek (ve muhtemelen) bir şeydir. Windows 7'nin UAC'si, kullanıcının izni olmadan programatik olarak hakları yükseltmeye izin verirse, bu aynı tırmağa basmak gibi görünüyor.
Andriy M

1
Toplu komut dosyasından bir şeyleri yönetici olarak başlatmak mı istiyorsunuz? Veya exe'yi her zaman yönetici olarak çalışacak şekilde değiştirmek mi istiyorsunuz (uyumluluk sekmesinde yapabildiğiniz gibi)?
Dracs

Yanıtlar:


5

BAT dosyasına sağ tıklayın ve ardından tuşuna basın. Kısayol oluştur . Kısayol görünecektir. Kısayolun özelliklerini düzenleyebilir ve her zaman yönetici olarak çalışacak şekilde ayarlayabilirsiniz. Tabii ki, şimdi BAT dosyasını kısayol üzerinden çalıştırmak zorunda.


1

Ayrıcalıkları komut satırından yükseltmek için ek bir yardımcı program yüklemeden düz pencerelerde mümkün olduğunu sanmıyorum.

Böyle bir yardımcı programı yarasa dosyanızla birleştirmeyi kabul ediyorsanız (veya sistem genelinde yüklüyse), şunları kontrol edin: http://www.winability.com/elevate/


0

Başka bir yöntem, toplu iş dosyasının daha sonra toplu iş dosyasını yükselten bir VBscript çağrısı yapmasıdır.

Toplu iş dosyalarını yükseltmenize olanak sağlayan Yükseklik Güçleri'ni indirebilirsiniz.

elevate -batchfile-

Başka bir yöntem kendi kendine yükselen bir komut dosyası oluşturmaktır. Bu kırılgan bir yöntem olabilir, ancak temel olarak% temp% 'a yazma hakkınız olduğunu varsayar.

Bu bir değiştirilmiş versiyonu İşte .

@ECHO OFF
::Ask for admin access
if exist "admincheckOK.txt" goto adminOK1
del /Q admincheckOK.vbs
ECHO.
ECHO. Please wait...
echo.Set objShell = CreateObject("Shell.Application") > %TEMP%\admincheckOK.vbs
echo.Set FSO = CreateObject("Scripting.FileSystemObject") >> %TEMP%\admincheckOK.vbs
echo.strPath = FSO.GetParentFolderName (WScript.ScriptFullName) >> %TEMP%\admincheckOK.vbs
echo.If FSO.FileExists(%0) Then >> %temp%\admincheckOK.vbs
echo. Dim oShell >> %TEMP%\admincheckOK.vbs
echo. Set oShell = WScript.CreateObject ("WScript.Shell") >> %TEMP%\admincheckOK.vbs
echo. oShell.run "cmd.exe /c echo admincheckOK > admincheckOK.txt" >> %TEMP%\admincheckOK.vbs
echo. Set oShell = Nothing >> %TEMP%\admincheckOK.vbs
echo. objShell.ShellExecute "cmd.exe", " /c " ^& %0 ^& " ", "", "runas", 1 >> %TEMP%\admincheckOK.vbs
echo.Else >> %TEMP%\admincheckOK.vbs
echo. MsgBox "Script file not found" >> %TEMP%\admincheckOK.vbs
echo.End If >> %TEMP%\admincheckOK.vbs
cscript //B %TEMP%\admincheckOK.vbs
goto theend

::Admin Access allowed
:adminOK1
del /Q admincheckOK.txt
del /Q admincheckOK.vbs

::**Body of Batchfile**
::**Code you want elevated**
pause

REM Following statement required if Admin access denied
:theend
del /Q admincheckOK.vbs

0

Bir exe için, yükseltme isteyen exe ile aynı klasöre bir bildirim koyarsanız, herhangi bir kişi uygulamayı her çalıştırdığında, yükseltmeleri istenir. Dosyayı klasörden silmek, davranışı normale döndürür.

Dosyanın adı exename.exe.manifest olmalıdır, diğer bir deyişle foo.exe varsa o zaman foo.exe.manifest dosyasını adlandırmalısınız. İçerik şöyle görünmeli:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <assemblyIdentity version="1.0.0.0"
            processorArchitecture="X86"
            name="appname"
            type="win32"/> 
<description>elevate execution level</description> 
   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
      <security>
         <requestedPrivileges>
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
         </requestedPrivileges>
      </security>
   </trustInfo>
</assembly>

(Ad ve açıklama önemli değil, onları uygulamanızla eşleştirmekten çekinmeyin.)

Bu, eğer exe daha düşük bir yürütme seviyesi talep eden yerleşik bir bildirime sahipse işe yaramaz, ancak açık bir uygulama için çalışacaktır.

Neden bir toplu iş dosyasıyla bunu açıp kapatmak istediğinizden emin değilim, ancak toplu iş dosyanızın bu dosyayı foo.exe.notmanifest ve yeniden foo.exe.manifest olarak yeniden adlandırmasını sağlayarak kolayca yapabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.