2009-05-20 39 views
6

我嘗試使用AddIPAddress以非管理員用戶身份登錄時向網卡添加臨時IP地址。 AddIPAddress的MSDN文檔指出,如果該函數是由非管理員用戶調用的,則ERROR_INVALID_HANDLE將作爲錯誤返回。模擬管理員用戶時使用AddIPAddress的問題

鑑於我已經使用API​​調用LogonUser()和ImpersonateLoggedOnUser()來調用AddIPAddress。現在我的應用程序認爲它以管理員身份登錄,但AddIPAddress仍然失敗並顯示ERROR_INVALID_HANDLE。

MSDN還指出..

「注意組策略,企業策略,網絡可能會阻止成功完成這些功能的其他限制。確保應用程序具有所需的網絡權限嘗試使用這些之前功能。」

是否可以使用模擬來調用AddIPAddress?如果是的話如何?我猜我需要更改上面提到的權限,但是我對這個領域的內容感到不知所措。

任何幫助,將不勝感激!

產生額外的:我也畫一個空白,同時試圖調出的netsh使用CreateProcessAsUser使用手柄的模擬的管理員用戶啓動程序(再次登錄作爲一個普通用戶)。始終返回錯誤,指示不足的特權。

+0

確實,試圖讓它沒有成功地運作。 LogonUser/ImpersonateLoggedOnUser和CoInitializeSecurity都沒有幫助。看起來像一些挖掘到GpEdit.msc是必需的。 – Andrey 2009-05-23 09:53:18

+0

欣賞你花時間研究這一點。我仍然無法相信它應該如此難以實現! – 2009-05-26 20:32:02

回答

1

如果您使用的是Windows Vista,則可能需要提升權限。

在默認情況下,啓用了UAC。這使得即使作爲管理員您正在使用有限的用戶令牌,除非您明確提升。當你這樣做時,用戶會看到一個對話框來允許或拒絕請求。

欲瞭解更多關於這個請參閱Windows Vista Application Development Requirements for User Account Control Compatibility

您可能想要嘗試使用CheckTokenMembership來驗證您在以管理員身份登錄後是否正確升級。我懷疑你得到的是有限的用戶令牌,因此對特權資源的請求失敗。

祝你好運。