【问题标题】:How to tell a program to run in user mode instead of administrator'如何告诉程序以用户模式而不是管理员模式运行
【发布时间】:2016-04-29 12:48:24
【问题描述】:

我已经构建了一个简单的 win32,32 位软件:

  • 真的很简单:一个窗口,两个按钮,
  • 不需要任何外部外来库(理想情况是在任何 Windows 计算机下运行)。

该程序在 xp 和 7 上运行良好,但在 Vista 上,该程序需要在管理员模式下运行。

我怎样才能告诉Vista“正常”运行这个程序?我试图编辑属性,但没有什么奇怪的。我不知道需要以管理员身份启动程序。

【问题讨论】:

  • 最可能的原因是 Windows 启发式。也就是说,Windows 认为您的程序看起来像是需要管理员权限的程序。解决方案是包含一个明确说明您不这样做的清单,例如,使用 /MANIFESTUAC 链接器选项。
  • 水晶球说 Vista 认为你的程序可能是一个安装程序。它无法知道这一点,它必须猜测。像 update.exe 或 setup.exe 这样的程序名称就可以了。
  • @HansPassant Hum 好主意,确实,该程序被命名为 something_updater.exe。下周一试试。

标签: windows-vista


【解决方案1】:

在 Vista 上,此问题来自可执行文件名称:something_updater.exe

存在一些解决问题的方法,请选择一个:

  1. 使用清单文件:

    在程序文件夹中添加一些something_updater.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"
            name="something_updater.exe"
            type="win32"
        />
        <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
            <security>
                <requestedPrivileges>
                    <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
                </requestedPrivileges>
            </security>
        </trustInfo>
        </assembly>
    
  2. 在链接时:

    在构建可执行文件时将以下选项添加到链接器:

    /MANIFESTUAC:level=asInvoker /MANIFESTUAC:uiAccess=false
    
  3. 更改程序名称,某些名称不包含updatesetup

【讨论】:

    猜你喜欢
    • 2011-07-13
    • 2022-06-25
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    相关资源
    最近更新 更多