在 Windows 7 上通过 bat 脚本将 exe 选项更改为以管理员身份运行

在 Windows 7 上通过 bat 脚本将 exe 选项更改为以管理员身份运行

我无法在 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 来轻松完成此操作。

相关内容