.net&管理员权限 - 如何为2种不同的方案嵌入清单文件

时间:2011-05-10 15:39:30

标签: .net uac manifest rights

我有一个.net应用程序,它将安装在以两种不同模式运行的“程序文件”下:

  • 所有插件的“ADVANCED_MODE” 启用哪个应该弹出UAC 以管理员身份运行
  • “BASIC_MODE”,插件很少 加载哪个应该正常工作 用户

如何解决此案件?

如果我嵌入了一个清单文件(requireAdmin设置为on),则它不适用于BASIC_MODE。如果我不使用任何清单,那么我没有机会在ADVANCED_MODE中弹出UAC。如果我使用“asInvoker”或“highestAvailable”,当我从Program Files以普通用户帐户运行应用程序时会出现奇怪的效果:它会在启动后立即关闭而不会发生任何崩溃。

你会做什么?我有什么选择?

1 个答案:

答案 0 :(得分:3)

在清单中使用asInvoker,当您的应用程序在ADVANCED_MODE中启动时(您还不是管理员),使用ShellExecute和“runas”动词启动应用程序的新实例。

这些“奇怪的效果”表示您的应用无法真正以非管理员身份运行(如果没有清单,您的应用会运行一些兼容性垫片,如文件和注册表重定向)您可以使用Microsoft Application Compatibility ToolkitLUA BuglightProcess Monitor寻找标准用户错误...