为什么我的程序要求允许在Vista上运行?

时间:2008-09-18 18:42:37

标签: visual-studio-2008 windows-vista

我刚刚使用VS 2008构建了一个VS C ++ 6.0程序。当我尝试运行或调试应用程序时,Vista会要求获得许可。关于如何构建程序导致这种情况的原因是什么?该程序正在构建并从C:\ Dev

的子文件夹运行

This response对我来说没有意义解决问题。

4 个答案:

答案 0 :(得分:3)

可能性1:

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

可能性2:

您的程序名为setup.exe或install.exe - 此类程序名称始终导致需要管理员权限

有关这些和其他可能性的详细说明,您会看到此检查Getting to Know User Account Control Technet article

答案 1 :(得分:1)

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

请勿禁用UAC来解决此问题,否则您的应用程序将无法在其他计算机上运行,​​除非它已关闭UAC。这是一个非常糟糕的做法。在完美的世界中,您的应用程序应该请求用户提升权限。

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

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