0

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

文档说“用户在本地计算机上缺乏所需的管理权限,或者应用程序没有在增强的外壳中作为内置管理员(RunAs 管理员)运行。”

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

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

4

1 回答 1

1

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

在 Windows Vista 和更高版本上,DeleteIpForwardEntry 函数只能由作为管理员组成员登录的用户调用。如果不是管理员组成员的用户调用 DeleteIpForwardEntry,则函数调用将失败并返回 ERROR_ACCESS_DENIED。

此外,您的帖子表明登录用户是管理员。您的 Windows 7 和 Windows Vista 测试是否可能针对不同的用户 - 在 Windows 7 上,您的测试用户是管理员,而在 Windows Vista 机器上,测试用户不是?

以这种方式运行应用程序无法解决此问题。您能否将其重新实现为在管理员帐户中运行的 Windows 服务,它作用于机器上的交互式登录事件以根据需要操纵 IP 配置?

于 2010-12-05T21:09:41.040 回答