我无法在 Windows 7 中禁用 UAC,我想更改.exe
选项以以管理员身份运行。我可以右键单击图标并转到兼容性,然后通过 GUI 更改此选项,但我必须通过 .bat 来执行此操作.....有人可以给我一个演示 .bat 吗?
答案1
右键单击 BAT 文件并按创建快捷方式。快捷方式将出现。您可以编辑快捷方式的属性并将其设置为始终以管理员身份运行。当然,您现在必须通过快捷方式运行 BAT 文件。
答案2
我认为,如果不安装额外的实用程序来从命令行提升权限,在普通的 Windows 中是不可能的。
如果你接受将这样的实用程序与你的 bat 文件捆绑在一起(或在整个系统范围内安装),请检查以下内容:http://www.winability.com/elevate/
答案3
另一种方法是让批处理文件调用 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
答案4
对于 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 来轻松完成此操作。