在Vista上拒绝DeleteIpForwardEntry访问

时间:2010-12-05 18:31:07

标签: winapi windows-vista platform-sdk vista-security

调用DeleteIpForwardEntry()在Windows XP和Windows 7上运行良好。但是,在Windows Vista上,它因ERROR_ACCESS_DENIED而失败。

文档说“用户缺少本地计算机上所需的管理权限,或者应用程序没有像内置管理员(RunAs管理员)那样在增强型shell中运行。”

嗯,在我的情况下,用户是本地计算机上的管理员,并且应用程序通过SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run登录运行,所以我无法告诉它在“增强的shell”中运行

有没有办法在Vista中解决这个“Catch 22”的情况?

1 个答案:

答案 0 :(得分:1)

我不明白为什么这可以在Windows 7上运行。文档表明失败将是相同的。

  

在Windows Vista及更高版本中,   DeleteIpForwardEntry函数只能   由登录为的用户调用   Administrators组的成员。如果   DeleteIpForwardEntry由a调用   不是该成员的用户   管理员组,功能   调用将失败并且ERROR_ACCESS_DENIED   归还。

此外,您的帖子表明登录用户是管理员。您的Windows 7和Windows Vista测试是否适用于不同的用户 - 在Windows 7上,您的测试用户是管理员,在Windows Vista计算机上测试用户不是?

以这种方式运行应用程序无法解决这个问题。您是否可以将其重新实现为在管理员帐户中运行的Windows服务,该帐户会根据需要对计算机上的交互式登录事件进行操作以操作IP配置?