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.
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.
Yanıtlar:
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.
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/
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
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.