【问题标题】:DeleteIpForwardEntry Access Denied on VistaVista 上的 DeleteIpForwardEntry 访问被拒绝
【发布时间】:2010-12-05 18:31:06
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 史蒂夫,感谢您的回答并 +1。我必须仔细检查您关于用户的问题,但我几乎可以肯定,在 Vista 和 7 中,它们只是安装程序创建的默认管理员(XP 中的“高级用户”......)。至于将其重新实现为 Windows 服务,我考虑过这个选项,但这肯定需要我做更多的工作。
    • 令人费解,因为从表面上看,行为应该是相同的。随时随地在此处更新最新信息。
    • 是的,行为应该是相同的,但如果我没记错的话,Windows 7 在处理 UAC 方面与 Vista 不同。我的理解是,Windows 7 为那些批评 Vista 的人带来了名声和赞誉。也许我在这方面遗漏了一些东西。
    • @Android Eve - 回到上面的第一条评论,这可能是问题所在。 “高级用户”与“管理员”不同,它的权限范围要小得多。见这里 - kellys-korner-xp.com/xp_groups.htm
    • Windows Vista 与 Windows XP 有很大的不同... 项目优先级已经转移,但我保证在适当的时候深入研究。我很想解开这个谜。
    猜你喜欢
    • 2010-10-16
    • 2021-07-15
    • 2019-02-07
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多