2017-08-15 47 views
-1

我正在爲C#項目創建安裝程序。它需要一個非託管的第三方C++ DLL來連接到硬件設備。當我從調試器運行項目時,或者當我右鍵單擊 - >以管理員身份在安裝的程序上運行時,一切正常。但是,如果我不以管理員身份以某種方式運行它,它會崩潰。那麼,如何設置安裝程序以便不需要管理員權限來運行?我知道我可以在app.manifest設置requestedExecutionLevelrequireAdministrator,但我不希望UAC提示每一次,我不知道最終用戶的機器將能夠運行任何東西作爲管理員。如何在VS安裝程序項目中使用非託管DLL,但沒有用戶需要管理員權限?

我目前的解決辦法是乾脆直接安裝到C:/,但我想將其安裝到所有其他應用程序安裝到沒有這個挫折相同的Program Files目錄。

+0

請一次問一個問題,而不是兩個不相關的問題 –

+0

我不知道你所說的「不具有這個挫折其他應用程序」的意思。任何安裝到Program Files的安裝程序都會生成一個UAC提示。這就是預期的行爲 - 如果您不是管理員,則無法在Program Files中安裝軟件。 –

+0

我刪除了另一個問題。通過「沒有這個挫折的其他應用程序」我想我的意思是「沒有外部庫/應用程序,不提示管理員權限的其他應用程序」 – zakparks31191

回答

3

受限用戶無法繞過安全限制,只是因爲他們正在運行一個安裝。寫入ProgramFiles文件夾需要提升(也許還有其他一些安裝過程),所以除了提升安裝外別無選擇 - 它將顯示UAC提升提示。你還沒有說過你用什麼工具來構建你的MSI,但是MSI沒有使用清單,並且(以WiX爲例),提升使用Package InstallPrivileges元素。

用戶並不需要admin因爲UAC提示將允許管理員將其憑據鍵入「過肩」的安裝工作,如果原來是可能的。在企業類型GPO安裝中也有託管部署選項,用戶無需升級。

具有MSI打電話給你的代碼需要創建安裝將調用自定義操作 - 它有一個需要調用約定。然後你可以從那裏調用你的第三方C++ DLL。不知道更多關於您想要添加更多信息的呼叫。在安裝過程中是否打過電話(可能是用戶界面)?安裝後?這是安裝的條件嗎?安裝完成後,它可以作爲應用程序中的配置檢查完成嗎?

+0

這是有道理的。我想就上下文而言,這是我做過的第一個VS安裝程序項目,所以我不確定一些事情。 那麼UAC提示只會在第一次啓動時出現?使用默認的VS 2010安裝程序項目,在啓動程序時沒有UAC提示,只會啓動並掛起。 – zakparks31191

相關問題