繁体   English   中英

在模拟管理员用户时使用AddIPAddress时出现问题

[英]Problem using AddIPAddress when impersonating an Admin User

我试图以非管理员用户身份登录时使用AddIPAddress向NIC添加临时IP地址。 AddIPAddress的MSDN文档指出,如果非管理员用户调用该函数,则返回错误ERROR_INVALID_HANDLE。

鉴于我已经在使用对LogonUser()和ImpersonateLoggedOnUser()的API调用调用AddIPAddress之前。 现在我的应用程序认为它以管理员身份登录,但AddIPAddress仍然失败,并且ERROR_INVALID_HANDLE。

MSDN还声明......

“注意组策略,企业策略和对网络的其他限制可能会阻止这些功能成功完成。在尝试使用这些功能之前,请确保应用程序具有必要的网络权限。”

是否可以使用模拟调用AddIPAddress? 如果是这样的话? 我猜我需要更改上面提到的权限,但我不知道在这方面要做什么。

任何帮助,将不胜感激!

Additonal:我还尝试使用CreateProcessAsUser调用netsh(再次以普通用户身份登录),并使用模拟管理员用户的句柄来启动该进程。 始终返回错误,表明没有特权。

如果您使用的是Windows Vista,则可能需要提升权限。

默认情况下,在Vista中启用UAC 这使得即使作为管理员,您也使用有限的用户令牌,除非您明确提升。 执行此操作时,将向用户显示允许或拒绝请求的对话框。

有关此内容的详细信息,请参阅用户帐户控制兼容性的Windows Vista应用程序开发要

您可能希望尝试使用CheckTokenMembership在您以管理员身份登录后验证您是否已正确升级。 我怀疑您获得了有限的用户令牌,从而未能获得特权资源请求。

祝你好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM