.NET的哪些部分需要执行管理权限?

Rub*_*ins 9 .net uac windows-7

框架的哪些部分要求用户不仅仅是标准用户?我问的原因是因为我正在尝试在迁移到Windows 7时编译现有应用程序的可能问题列表.

现在,我自己可以想到一些事情:

  • 写入Eventlog
  • 写入Current_User范围之外的注册表键
  • 获取环境变量
  • 等等...

我真的想要一个更完整的列表,到目前为止我还没有找到一个合适的资源,其中列出了所有这些东西.

请注意,我不是在寻找提升现有应用程序权限的方法(可以通过使用清单来完成),我只是在代码中识别可能导致问题的操作.

rea*_*idt 8

那么,你的例子与Windows 7或.NET没有任何关系.实际上它们已经是"Designed for Windows NT 4.0"徽标要求的一部分.如果您以非管理员用户能够在NT,Win2k或XP上运行它的方式编写应用程序,它将在Vista/Win7上正常运行.

在x64系统上运行软件时还有另一个常见的缺陷(但这也不是Win7特有的,但对于Win2003 Server x64或Win XP x64也是如此):如果您使用的是本机32位代码,比如调用本机DLL或COM与进程内组件互操作),请确保在Visual Studio项目设置中选择"x86"作为平台目标,而不是"任何CPU".否则,您的应用程序将作为64位进程运行,并且您不能在同一进程中混合使用32位和64位代码,因此您将遇到错误.

当然,因为它始终是最佳实践,所以使用Environment.GetSpecialFolders而不是硬编码路径.

  • 这是如何回答这个问题的? (2认同)

Kat*_*ory 8

把它想象成"什么库调用"将导致你走错路.考虑写入文件的任何内容.如果该文件在Program Files(以及其他地方)下,则需要admin privs.如果它在AppData下,你就不会.相同的库调用,不同的结果.同意写入注册表 - HKLM你需要管理员,HKCU你不需要.写入事件日志通常是正常的,但创建事件源不是.等等.这不是关于你调用什么方法,而是关于你传递给它的params(例如path).