我有一个Windows服务,该服务使用ImpersonateLoggedOnUser
来删除系统权限并使用当前用户权限运行另一个应用程序。
如果对ImpersonateLoggedOnUser
的调用失败,则该服务执行的应用程序必须具有设计上的系统权限,这是不好的。我通过检查返回值来解决此问题。
现在,我尝试确定是否有可能使该函数调用失败。
在没有修改应用程序且没有管理员权限的情况下,是否会发生这种情况? (当然,没有修复方法)
如果是,怎么办?
HANDLE hToken;
OpenProcessToken( hProcess, MAXIMUM_ALLOWED, &hToken );
ImpersonateLoggedOnUser( hToken );
[...]
谢谢!
最佳答案
如果您没有模拟特权或相关句柄无效,则ImpersonateLoggedOnUser将失败。
我不确定该API是否还有其他故障模式。