2010-12-05 104 views
0

調用DeleteIpForwardEntry()在Windows XP和Windows 7上工作得非常好。但是,在Windows Vista上,它會因ERROR_ACCESS_DENIED失敗。DeleteIpForwardEntry訪問在Vista上被拒絕

該文檔顯示「用戶在本地計算機上缺少必需的管理權限,或者該應用程序未作爲內置管理員(RunAs管理員)在增強型shell中運行。」

那麼,在我的情況下,用戶是本地計算機上的管理員,並通過SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run登錄時運行該應用程序,因此我無法真正地告訴它在「增強的外殼」。

有沒有辦法在Vista中解決這個「Catch 22」的情況?

回答

1

我不明白爲什麼這可以在Windows 7上工作。文檔指出失敗將是相同的。

在Windows Vista及更高版本, DeleteIpForwardEntry功能只能 被稱爲用戶身份登錄的管理員組的成員 。如果 DeleteIpForwardEntry被 用戶調用,該用戶不是 管理員組的成員,則函數 調用將失敗,並返回ERROR_ACCESS_DENIED 。

此外,您的帖子顯示登錄用戶是管理員。是否有可能您的Windows 7和Windows Vista測試適用於不同的用戶 - 在Windows 7上,測試用戶是管理員,在測試用戶不是Windows Vista機器上?

沒有辦法解決這個以這種方式運行應用程序。您是否可以將其重新實現爲管理員帳戶中運行的Windows服務,該服務根據需要對機器上的交互式登錄事件起作用以操縱IP配置?

+0

Steve,謝謝你+1的回答。我必須仔細檢查你對用戶的問題,但我幾乎可以肯定的是,在Vista和7中,他們只是安裝程序(XP中的「超級用戶」)創建的默認管理員。至於重新實現這個作爲一個Windows服務,我想過這個選項,但這肯定需要更多的工作在我身邊。 – 2010-12-08 18:50:41