【问题标题】:How to determine if calling a function requires administrative privileges如何确定调用函数是否需要管理权限
【发布时间】:2011-09-23 21:14:25
【问题描述】:

我正在尝试找出是否有一种简单的方法来判断调用函数是否需要我的程序以管理员身份运行才能正常工作。谢谢!

【问题讨论】:

    标签: windows function uac administrator elevated-privileges


    【解决方案1】:

    当然。您可以运行该函数,如果它失败并显示GetLastError() == ERROR_ACCESS_DENIED,那么您需要管理权限。

    【讨论】:

    • GetLastError() 是否从以前的错误列表中删除检索到的错误...后续调用 GetLastError() 是否会重复返回相同的最后一个错误,直到发生另一个错误?
    • 有什么方法可以确定哪些功能需要管理权限,而无需在其上实际运行测试程序……也可以通过某种方式解析源代码,并查找需要增强访问权限的特定部分。例如,是否有需要管理访问才能成功调用的特定 Win32 API 函数的列表?谢谢!
    • 不,没有实际的列表,因为在几乎所有情况下,它都取决于参数以及参数所代表的内容。例如,CreateFile 可能需要也可能不需要管理员访问权限,具体取决于您尝试打​​开的文件以及该文件上的 ACL 是什么。所以要么你需要去阅读函数的描述,看看它是否使用 ACL 访问任何东西或需要特殊的令牌权限,或者你可以运行这个东西,看看它是否会帮助你。
    • 并且错误代码可以更改的条件记录在 GetLastError(): msdn.microsoft.com/en-us/library/ms679360(v=vs.85).aspx 的 msdn 页面中。 GetLastError() 本身不会改变最后的错误代码
    猜你喜欢
    • 2015-06-20
    • 2016-02-24
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多