3

我刚刚使用 VS 2008 构建了一个 VS C++ 6.0 程序。当我尝试运行或调试应用程序时,Vista 会请求许可。导致这种情况的程序是如何构建的?该程序正在从 C:\Dev 的子文件夹构建和运行

作为解决问题的方法,这种回应对我来说毫无意义。

4

4 回答 4

3

可能性一:

您的程序在其清单中被标记为需要管理员权限

可能性2:

您的程序称为 setup.exe 或 install.exe - 这样的程序名称总是需要管理员权限

有关这些和其他可能性的详细说明,为什么您会看到此检查了解用户帐户控制 Technet 文章

于 2008-09-18T18:56:36.590 回答
1

MVP 正在谈论让您的代码和项目从您的用户文件夹运行,例如 c:\users\yourname\appdata 或该路径下的其他内容。

不要禁用 UAC 来解决此问题,否则您的应用程序将无法在另一台机器上运行,除非它关闭了 UAC。这是一个非常糟糕的做法。在理想情况下,您的应用程序应该向用户请求提升的权限。

于 2008-09-18T18:50:00.117 回答
1

谢谢苏玛。您的反应是最好的,并帮助我找到了解决方案。我已确定您的第一个建议解释了原因。将文件重命名为不包含“设置”一词的内容没有帮助。

原来我错了。我同时安装了 VS 2005 和 VS 2008,当我尝试打开旧的 .dsw 文件时,它是 2005 年启动并提供升级项目的。2005 显然创建了一个清单,其中只有一行带有“程序集”标签。一旦我使用 VS 2008 升级了项目,就会创建一个更广泛的清单文件。我通过检查 Manifest Tool...Input and Output...Embed Manifest 设置确认清单已嵌入到我的程序中。这个新清单包括以下数据:

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
      </requestedPrivileges>
    </security>   

于 2008-09-18T19:27:52.380 回答
0

如果您不是管理员,那么您可能没有在 C:\Dev 中执行程序的权限。

于 2008-09-18T18:50:23.470 回答