【问题标题】:issues regarding UAC prompt关于 UAC 提示的问题
【发布时间】:2011-03-02 01:34:07
【问题描述】:

我想在 Visualc++ 中为应用程序实现 UAC 提示,操作系统是 32 位 x7460(2 个处理器) Windowsserver 2008 的 exe 是 myproject.exe 通过 manifest..

为了测试,我将在 Windows XP 操作系统中构建应用程序并将 exe 复制到包含 Windowsserver vistamachine 的系统中 并替换它

所以我做的是

【问题讨论】:

  • 请不要让我们猜测“语法错误”。
  • 我是 C# 的家伙,我不知道 c++ 那是什么东西。但是这个项目包含 c、c++、c# 我收到了很多语法错误。在 Myproject 中添加代码行时有什么问题吗.h 当我评论它时 #define MANIFEST_RESOURCE_ID 1 MANIFEST_RESOURCE_ID RT_MANIFEST "myproject.exe.manifest" 我看不到任何错误
  • 项目中的所有部分都有很多我没有触及的错误,比如语法错误:'public' \\\Myproject.cpp 28 missing type specifier - int 假定。注意:C++ 不支持默认整数 \MyprojectDlg.cpp
  • 这是我的问题,我在宏中添加了空间

标签: .net visual-c++ visual-studio-2005 windows-xp windows-server-2008


【解决方案1】:

我似乎记得在 Visual Studio 2005 中对清单的支持非常不稳定——它在 VS2008 中得到了很大改进(尽管当您将项目转换为 2008 时,您必须手动检查它所做的清单更改)。我建议不要在项目中使用清单选项。而是创建一个后期构建步骤以使用 mt 工具手动嵌入资源 - 例如参见 this example

mt 工具还允许您检查清单的有效性。不过,如果您可以选择升级到 VS2008,那非常值得。

【讨论】:

  • 不,我应该使用 Visualstudio 2005 本身
  • 我强烈建议不要直接使用 VS2005——当我试图让一个需要提升的组件工作时遇到了很多问题。在构建后步骤中执行此操作更安全 IMO。要深入了解您的特定问题,听起来好像找不到该文件,因此它可能在不同的文件夹中查找,例如项目根目录而不是源文件夹。尝试运行进程监视器,然后过滤“路径包含 .manifest”,它会告诉你它在哪里寻找文件。
【解决方案2】:

尝试在项目设置中禁用清单工具。在 Visual Studio 2005 中,您可以获得带有上述 .rc 文件更改的嵌入清单。您为 UAC 显示 XML 似乎是正确的。

Visual Studio 2005 在资源视图中没有对嵌入式清单的任何内置支持,但 Visual Studio 2008 有。

【讨论】:

  • 我收到这么多语法错误。当我在 Myproject.h 中添加代码行时,我评论它时是否有任何问题#define MANIFEST_RESOURCE_ID 1 MANIFEST_RESOURCE_ID RT_MANIFEST "myproject.exe.manifest" 我看不到任何错误
  • 我是 C# 的家伙,我不知道 c++ 那是什么东西。但是这个项目包含 c,c++,c#
  • 如何在项目设置中禁用manifest工具,是否需要
  • 项目中的所有部分都有很多我没有触及的错误,比如语法错误:'public' \\\Myproject.cpp 28 missing type specifier - int 假定。注意:C++ 不支持默认整数 \MyprojectDlg.cpp
  • 这是我的问题,我在宏中添加了空间
【解决方案3】:

“实现 UAC 提示”到底是什么意思?如果您希望您的应用程序需要管理员权限,那么嵌入或添加清单是正确的方法。

您可能会收到无法加载清单的错误,因为您必须单独指定资源的包含目录。确保包含清单的文件夹包含在资源包含路径中(右键单击项目 -> 属性 -> 资源 -> 其他包含目录)。请注意,无法提升已运行进程的权限。

如果您想从应用程序中的某个点触发 UAC 提示,有一种方法可以使用此技术:http://msdn.microsoft.com/en-us/library/ms679687(VS.85).aspx

【讨论】:

  • 是的,你是对的,我在桌面上创建了清单并将其添加到项目中。现在我将它包含在项目中,并按照您提到的方式将其添加到“其他包含目录”中,因此一般错误结束但仍然我收到很多语法错误。当我在 Myproject.h 中添加代码行时,我评论它时是否有任何问题#define MANIFEST_RESOURCE_ID 1 MANIFEST_RESOURCE_ID RT_MANIFEST "myproject.exe.manifest" 我看不到任何错误
  • 正如 Hans 上面已经写的那样,我们需要查看那些语法错误,否则我们将无法提供帮助。
  • 如何在项目设置中禁用manifest工具,是否需要
猜你喜欢
  • 2010-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
  • 1970-01-01
  • 1970-01-01
  • 2011-03-12
  • 1970-01-01
相关资源
最近更新 更多