Я не могу отключить UAC в Windows 7 и хочу изменить .exe
для запуска в качестве администратора. Я могу щелкнуть правой кнопкой мыши на значке и перейти к совместимости, а затем изменить эту опцию через графический интерфейс, но я должен сделать .bat ..... Может кто-нибудь дать мне демо .bat.
4 ответа
Щелкните правой кнопкой мыши файл BAT и нажмите « Создать ярлык». Ярлык появится. Вы можете отредактировать свойства ярлыка и настроить его на запуск от имени администратора. Конечно, вы должны запустить файл BAT через ярлык сейчас.
Я не думаю, что это возможно в простых окнах без установки дополнительной утилиты для повышения привилегий из командной строки.
Если вы согласны связать такую утилиту с вашим bat-файлом (или установить его для всей системы), проверьте это: http://www.winability.com/elevate/
Другой метод - заставить пакетный файл вызывать VBscript, который затем повышает пакетный файл.
Вы можете скачать Elevate PowerToys, которые позволяют повышать пакетные файлы.
elevate -batchfile-
Другой способ - создать самоподъемный скрипт. Это может быть хрупким методом, но в основном он предполагает, что у вас есть доступ на запись к% temp%
Это модифицированная версия той, что здесь.
@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
Для exe, если вы поместите манифест в ту же папку, что и exe, который запрашивает повышение прав, каждый раз, когда кто-либо запускает приложение, ему будет предложено его поднять. Удаление файла из папки вернет поведение в нормальное состояние.
Имя файла должно быть exename.exe.manifest, другими словами, если у вас есть foo.exe, вы должны назвать файл foo.exe.manifest. Содержимое должно выглядеть так:
<?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>
(Имя и описание не имеют значения, не стесняйтесь, чтобы они соответствовали вашему приложению. Или нет.)
Это не будет работать, если у exe-файла есть встроенный манифест, запрашивающий более низкий уровень выполнения, но будет работать для приложения без манифеста.
Я не уверен, почему вы хотите включить и выключить этот пакетный файл, но вы можете легко сделать это, переименовав этот пакетный файл в foo.exe.notmanifest и вернув его в foo.exe.manifest.