2011-10-06 73 views
4

我遇到了異常AddressAccessDeniedException,因爲我的processus沒有註冊URL的權利。我第一次以管理員身份運行我的程序:好吧,它工作。AddressAccessDeniedException:解決它沒有netsh?

但我現在想分發我的應用程序,並且我希望每個用戶都能夠運行它,而不必成爲管理員。

有沒有辦法自動授予用戶訪問權限?

我看到了命令:

netsh http add urlacl url=http://+:8000/ user=DOMAIN\UserName 

我應該使用?如果是,如何?

我想這樣做會授予訪問withouth的是管理員......說這樣的,它似乎愚蠢的,但可能是......

回答

7

那是不可能的。 Windows使用內核驅動程序處理HTTP請求,並在此驅動程序上打開偵聽器,並由ACL(訪問控制列表)進行安全保護。如果要打開偵聽器,以便應用程序可以偵聽來自其他計算機的請求,則必須以管理員身份運行以通過ACL,或者必須擁有權限(=您必須位於ACL中)。您也可以關閉UAC(用戶訪問控制)以繞過這些檢查。

netsh是一個允許您爲HTTP.sys(內核驅動程序)設置ACL的工具。您可以授予任何用戶偵聽選定端口的權限,但顯然您必須是admin才能授予這些權限,或者您必須有權爲已配置的權限委派權限,否則此安全性的全部內容將消失。

netsh調用添加到您的安裝包,並要求以管理員身份執行安裝(這對於許多應用程序來說很常見)。另外請注意,netsh僅適用於Windows Vista,Windows 7,Windows Server 2008和Windows Server 2008 R2。對於Windows 2003和Windows XP(至少需要SP2),您需要另一個名爲httpcfg的工具,它不是OS安裝的一部分(它必須單獨安裝)。

+0

噢...所以,我只是想做一些不可能的事情?順便說一句thansk的解釋,似乎我將不得不使用netsh!謝謝;) – JohnM

+1

用戶可能想更改我的Windows服務作爲服務帳戶運行的端口。服務帳戶不應該是管理員,對嗎?有沒有辦法爲服務帳戶提供HTTP.sys的完整權限 - 完整管理員權限的子集。我只能看到netsh允許保留某些端口。在更改端口或具有單獨的可執行文件或批處理之後需要命令行命令似乎不必要的複雜。 –