调用DeleteIpForwardEntry()在Windows XP和Windows 7上运行良好。但是,在Windows Vista上,它因ERROR_ACCESS_DENIED而失败。
文档说“用户缺少本地计算机上所需的管理权限,或者应用程序没有像内置管理员(RunAs管理员)那样在增强型shell中运行。”
嗯,在我的情况下,用户是本地计算机上的管理员,并且应用程序通过SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run登录运行,所以我无法告诉它在“增强的shell”中运行
有没有办法在Vista中解决这个“Catch 22”的情况?
答案 0 :(得分:1)
我不明白为什么这可以在Windows 7上运行。文档表明失败将是相同的。
在Windows Vista及更高版本中, DeleteIpForwardEntry函数只能 由登录为的用户调用 Administrators组的成员。如果 DeleteIpForwardEntry由a调用 不是该成员的用户 管理员组,功能 调用将失败并且ERROR_ACCESS_DENIED 归还。
此外,您的帖子表明登录用户是管理员。您的Windows 7和Windows Vista测试是否适用于不同的用户 - 在Windows 7上,您的测试用户是管理员,在Windows Vista计算机上测试用户不是?
以这种方式运行应用程序无法解决这个问题。您是否可以将其重新实现为在管理员帐户中运行的Windows服务,该帐户会根据需要对计算机上的交互式登录事件进行操作以操作IP配置?