是否有规则或指南来了解是否需要 .NET 应用程序清单来实现 UAC 目的?
我有一个应用程序写入注册表(HKLM > Software > yadda yadda)并执行文件 I/O。我不确定它是否需要清单。文件 I/O 可能是网络共享(尽管应用程序本身会提示用户输入凭据)或本地。
如果我不确定,我宁愿不只是将其设置为最高级别。
你应该包括一个清单。如果您不想总是请求不必要的提升,您可以请求 asInvoker 或highestAvailable。如果您的应用程序在没有提升的情况下无法运行,那么您可能别无选择,当然除了更改应用程序。
在尝试学习这些东西时,我发现有几个网站非常方便。
这个站点很好地解释了 UAC 的工作原理以及您可以预期它如何影响您的应用程序:
每个软件工程师必须了解的关于 Windows Vista的知识 http://codefromthe70s.org/vistatutorial.aspx
我还发现这篇关于清单的博客文章很有用:
几个应用程序清单之谜和问题的答案 http://blogs.msdn.com/b/patricka/archive/2009/12/09/answers-to-several-application-manifest-mysteries-and-questions.aspx
至于您的具体情况,最好的办法就是尝试一下。如果您能够写入所需的注册表项和无需提升的磁盘,那么您可以将其设置为 asInvoker。
只要您不尝试将任何内容保存到受限区域(如系统目录),I/O 就不会造成问题。恐怕我不记得写给 HKLM\Software 的规则了。如果它在没有海拔的情况下工作,那就太好了。
但作为最佳实践,我仍然会包含清单。