2011-06-19 205 views
0

我正在開發一個安裝程序,我想寫入只能由管理員訪問的文件夾。所以,我需要顯示UAC對話框並以管理員身份進行身份驗證。我知道我可以通過從安裝程序GUI運行單獨的可執行文件來實現這一點,但我更願意使用一種解決方案,以便在應用程序中隨時進行身份驗證。這在.NET中可能嗎?以管理員身份進行身份驗證?

+0

UAC ......讓我想起了火星 –

回答

3

您不能更改權限級別中期過程中,一旦一個進程已經開始還停留在那個權限級別。您必須使用提升的權限啓動單獨的進程,並與IPC通信以更新GUI。

如果你正在寫一個安裝程序的最好的事情就是剛剛慶祝安裝自己的應用程序表現爲行政權本身,以便將請求管理員權限啓動時,你將每次需要也無妨。

+0

我之所以不想(例如立即要求管理員權限),這樣做是因爲我希望能夠安裝到本地/應用程序數據文件夾以及。 – Ryan

+1

然後,你將需要生成第二處理沒有GUI和使用某種形式的[IPC](http://msdn.microsoft.com/en-us/library/aa365574%28v=vs.85%29.aspx) ([WCF(http://msdn.microsoft.com/en-us/library/ms735119%28v=vs.90%29.aspx)使用管道將是可能的候選者,但你將有權限的發揮當你有一個高權限進程與一個低權限進程交談時,默認的進程將不起作用)告訴它該做什麼。 –

0

你必須用這個配置爲Manifest文件運行一個新的進程:

<security> 
    <requestedPrivileges> 
    <requestedExecutionLevel level="requireAdministrator" /> 
    </requestedPrivileges> 
</security> 
0

作爲替代開始一個新的進程升高,您可以創建提升一個新的COM對象。


某些安裝程序使用類似於您正在嘗試執行的方法。一個例子是foobar2000 installer。在第一個屏幕上,它會詢問標準的(所有用戶)或便攜式設置。如果選擇標準,它會提示升高並重新啓動。

所以,你最簡單的選擇將是從用戶那裏收集數據,然後重新啓動自身或其他可執行以管理員身份做它通過與用戶的選擇參數的實際工作。