什么时候应用程序绝对需要以管理员身份运行?

时间:2013-04-25 05:10:11

标签: c++ windows elevated-privileges

我一直在和UAC很好地合作一段时间,我发现了一些事情:

  1. 启用UAC后,无法根据this Stack Overflow thread运行Startup文件夹中需要以管理员身份运行的程序(例如嵌入式清单)。
  2. 在启动时运行程序的另一种方法是在64位计算机中创建一个包含该应用程序路径的密钥:HKLM or HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunHKLM or HKCU\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
  3. 另一种方法是使用任务计划程序设置以最高权限运行选项。这是绕过第1点所述问题的唯一方法。
  4. 来自Linux背景,我对所有这些与管理员权限相关的问题一无所知。如果有人可以列出绝对需要管理员权限的方案,那将会有很大的帮助!

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

    如果我知道,在设计时,所有可能需要管理员权限的场景,我可以为我的所有应用程序设计一个公共服务来处理所有管理员任务(我认为服务是Windows的做法,如同这一点)。

1 个答案:

答案 0 :(得分:0)

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