如何配置我的应用程序使其自动以管理员身份运行?


9

我已经使用Winrar SFX功能创建了一个带有可执行文件的补丁文件。
在执行SFX文件并完成提取后,我的可执行文件将永远不会运行,因为它没有管理员权限。我想知道如何通过某种编程方式(例如批处理文件)授予管理员对该文件的访问权限。

我知道我可以右键单击它,转到“属性”,选择“兼容性”选项卡,然后选中“以管理员身份执行”框。

问题是将下载该修补程序的用户不知道(我的exe仅在您右键单击它并选择“以管理员身份打开”时运行,否则它将永远不会打开也不显示UAC弹出窗口)。

我尝试了一些方法,例如“电梯赛跑者(提升我)”等,但实际上我正在寻找比这更简单的方法。
我只需要使该exe始终以管理员身份运行即可。


2
模组说明:此处不需要迁移到SO
卡兰2013年

Answers:


15

您需要做的是将应用程序清单嵌入到EXE中。

  1. 将以下内容另存为名为App.exe.manifest的文本文件:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
        <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
            <security>
                <requestedPrivileges>
                    <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
                </requestedPrivileges>
            </security>
        </trustInfo>
    </assembly>
    
  2. 下载Windows SDK。

  3. 在内部,您可以找到mt.exe清单工具。调用它如下:

    mt.exe -manifest "App.exe.manifest" -outputresource:"App.exe";#1
    
  4. 如果没有错误,您就完成了。您可以删除清单文件并仅分发EXE。运行它应该使它每次自动请求管理员访问权限。

资源


我会测试。顺便说一句,是否有可能使“清单”更好一些?是否喜欢以管理员身份执行而无需请求管理员访问权限?谢谢
拉斐尔·维达尔2013年

意味着您希望它以静默方式提升并获得管理员访问权限?除非您无法关闭UAC,否则UAC的意义何在?您是否认为每种恶意软件都将这样做?
卡兰2013年

我理解您的意思,但是我知道有很多方法……不容易确定,但是有一些方法,例如“ Elevate Me”程序……无论如何,让exe以admin身份运行就足够了。预先致谢
拉斐尔·维达尔

1
所有此类绕过海拔提示的程序都使用众所周知的Task Scheduler技巧,该技巧需要管理员访问权限。由于您希望在执行SFX的任意PC上执行此操作,因此,未经标准用户的同意,您不能静默创建计划任务。实际上,如果有任何程序在我的PC上执行了此操作(默默地创建了计划任务以绕过UAC),我将立即将其分类为恶意软件并将其删除。
卡兰2013年

很好的Karan,做得很好。我只建议您添加将CMD作为ADMIN运行的需求,否则它将无法正常工作...再次感谢您
Rafael Vidal

2

创建档案时,请请求管理员访问权限在此处输入图片说明


MDMoore313,谢谢您的宝贵时间,但我想我对自己的解释不太好。我不需要以管理员身份运行SFX。我需要运行一个特定文件admin(“ my_app.exe”),该文件位于SFX文件内。关键是双击该文件不会使其运行。运行它的唯一方法是右键单击它,然后选择“以管理员身份运行”
Rafael Vidal

@RafaelVidal SFX是否启动您的应用程序?如果是这样,则您的应用将具有管理员权限。如果没有,我将更新我的答案。
MDMoore313 2013年

不,它不会启动该应用程序。用户必须手动执行此操作,因此他可以在“兼容性”选项卡上选中“以管理员身份运行”框,或右键单击“以管理员身份运行”上下文菜单
Rafael Vidal

@RafaelVidal是否有您不希望WinRAR启动exe的原因,而只是让用户自己运行SFX?看来这将实现相同的目标并解决您的管理员问题。如果您仍然专注于将程序标记为以管理员身份运行,则您更有可能在堆栈溢出时给出答案(标记要迁移的问题)
MDMoore313 2013年

SFX确实会启动该文件,但是用户可以稍后自行运行该文件,然后再没有SFX可以运行该文件。这就是为什么该exe需要标记为“以管理员身份运行”的原因
Rafael Vidal
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.