1

一段时间以来,我一直在尝试与 UAC 很好地合作,我发现了一些事情:

  1. 启用 UAC 后,需要以管理员身份运行(例如通过嵌入式清单)的 Startup 文件夹中的程序无法根据此 Stack Overflow 线程运行。
  2. HKLM or HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run在启动时运行程序的另一种方法是在 64 位机器或64 位机器中创建包含该应用程序路径的密钥HKLM or HKCU\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
  3. 另一种方法是使用任务计划程序设置以最高权限运行选项。这是绕过第 1 点所述问题的唯一方法。

来自 Linux 背景,我对所有这些与管理员权限相关的问题一无所知。如果有人可以列出绝对需要管理员权限的场景,那将有很大帮助!

我问这个是因为当我开发一些应用程序时,我在实现过程中一直遇到一些问题,主要是因为我的应用程序需要管理员权限,而它不应该。

如果我在设计时知道所有可能需要管理员权限的场景,我可能会为我的所有应用程序设计一个通用服务来处理所有管理员任务(我认为服务是 Windows 的处理方式)。

4

1 回答 1

0

确实没有需要提升的场景或 API 函数调用列表。您最好的选择可能是关注哪些 API 调用需要提升。这样做的原因是,只有在将某些值传递给函数时才可能需要它。例如CreateFile,可以在您的主目录中创建一个文件而无需提升,但需要它在 C:\Windows 中创建文件。如果目录是通过用户输入提供的,那么您可以知道是否需要提升的唯一方法是在调用失败时检查错误代码。如果需要提升,该函数会将错误状态设置为ERROR_ACCESS_DENIED并返回一个指示失败的值。

于 2013-04-25T06:25:53.803 回答