我們正在創建一個C#.net應用程序,該應用程序使用在 C++中開發的.dll文件。它還需要一些由第三方開發的用戶控件 (與應用程序捆綁爲.dll)。如果我們在 上運行此應用程序,則啓用UAC的計算機將按預期執行。但是,如果我們 使用通過Visual Studio部署 項目創建的安裝程序進行部署,它會崩潰。如果安裝的可執行文件是「作爲 管理員」運行。 另外,如果需要管理員權限的清單被添加到 C#可執行文件,它會在安裝後正常運行,但是UAC每次運行可執行文件時都會詢問 。 是否有東西可以指定始終作爲管理員運行 而不必每次都彈出UAC或安裝程序更改了這樣的 它不需要管理員權限在安裝後運行 (因爲如果在沒有安裝的情況下運行應用程序不需要管理員 privilleges)?使用UAC部署C#應用程序
1
A
回答
3
顯然,如果沒有UAC提示,您將無法以管理員身份運行。這會讓惡意軟件編寫者的生活變得簡單。
我懷疑它的安裝位置。通常在\ Program Files \下,這也是它的默認工作目錄。但是,該程序在非管理員帳戶下運行時可能不會寫入該程序。 DLL可能試圖寫入當前工作目錄嗎?
+0
是的,.dll寫入日誌文件。 – quake 2011-02-14 16:07:32
0
實際上有一個解決方案。將需要提升的代碼遞送到Windows服務。你的應用程序然後可以調用你的服務來運行提升的命令(使用WCF,RPC,遠程處理或任何你想要的)。
但是你必須要小心:
- 它可以是一個安全漏洞,因爲非高架程序可能要求升高一個做的工作。如果您的應用程序包含錯誤或沒有足夠的數據檢查,可能會很危險。
- 您的服務將始終運行
- 您的服務將以特定的用戶身份或內建運行。該進程將無法獲得登錄用戶的身份。如果沒有UAC,我認爲代表團不會工作。
0
如已回答的,如果應用程序清單中請求管理員權限,則應用程序啓動期間無法解決UAC提示。
但是,您可能會使用一種解決方法:在安裝期間,爲日誌文件或文件夾上的每個人設置寫入權限。
請注意,這不是一個「乾淨」的解決方案。相反,你應該改變DLL的代碼來登錄別的地方。
相關問題
- 1. 使用accord.video.ffmpeg部署應用程序c#
- 2. 部署C#應用程序
- 3. 部署C#應用程序
- 4. 部署使用DirectX程序集的C#應用程序
- 5. 部署簡單的C++應用程序
- 6. 在雲中部署C++應用程序
- 7. QT - 部署C++應用程序
- 8. 部署Release C#windows應用程序
- 9. 部署C++ QT5應用程序
- 10. 部署c#應用程序問題
- 11. C#Windows應用程序部署
- 12. 部署C#SQLite應用程序
- 13. 部署C#應用程序(混淆)
- 14. 部署應用程序問題(C++)
- 15. C#MVC應用程序部署問題
- 16. linux C++應用程序部署
- 17. 使用外部庫的OpenCV C++應用程序部署
- 18. 使用HttpWebRequest部署ClickOnce應用程序
- 19. 使用FTP部署rails應用程序
- 20. 使用CherryPy部署django應用程序
- 21. 使用ClickOnce應用程序部署NLog
- 22. 使用installshield部署應用程序
- 23. 使用AppJS部署應用程序?
- 24. 使用EasyPHP部署Ruby應用程序
- 25. 使用Flexdashboard部署Shiny應用程序
- 26. 使用ECLIPSE部署Web應用程序
- 27. 使用Capistrano部署rails應用程序
- 28. 使用capistrano部署java應用程序
- 29. 使用Docker部署NoneJS應用程序
- 30. 使用JVM部署應用程序
如果您以管理員身份運行並啓用UAC,則無法阻止UAC彈出,因爲這會挫敗UAC的用途。 – AndrewC 2011-02-14 15:56:34
我同意不應該這樣,但是我的意思是,如果獲得一次許可,那麼是否有辦法讓它記住它是可信的可執行文件? – quake 2011-02-14 16:06:39