0

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

  • 启用所有插件的“ADVANCED_MODE”应弹出 UAC 以管理员身份运行
  • “BASIC_MODE”只加载了几个插件,应该像普通用户一样工作

怎么办才能解决这个案子?

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

你会怎么办?我有哪些选择?

4

1 回答 1

3

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

这些“奇怪的影响”表明您的应用程序不能真正以非管理员身份运行(如果没有清单,您的应用程序将使用文件和注册表重定向等一些兼容性填充程序运行)您可以使用Microsoft Application Compatibility ToolkitLUA BuglightProcess Monitor寻找标准的用户错误...

于 2011-05-10T15:57:15.237 回答