2014-09-04 75 views
0

我有一個第三方可執行文件,我試圖將其包含在InstallShield MSI軟件包中,我希望它具有在所有類型的Windows中設置的權限,特別是要以管理員身份運行的Vista。手動清單文件

我不是那種在Manifest文件的創建或正確的配置語法上找不到的,但我試圖手動創建一個作爲[appname] .exe.manifest,並嘗試在XML中使用<requestedExecutionLevel level=」asInvoker」 uiAccess=」false」 />,沒有以管理員身份運行,我想確認這是因爲程序沒有以這種方式編譯以查看清單文件在同一個目錄中,還是隻是清單文件具有的情況沒有得到正確的語法。

如果還有其他簡單的想法,我很樂意聽到它!

乾杯。

+0

可能的重複[如何將清單添加到使用mt.exe的可執行文件?](http://stackoverflow.com/questions/1423492/how-do-i-add-a-manifest-to-an -executable-using-mt-exe) – 2014-09-04 18:26:38

+0

這是您的EXE而非InstallShield的問題。嘗試使用重複問題解決方案,並查看是否可以在將清單發送到InstallShield進行打包之前創建並嵌入清單。 – 2014-09-04 18:27:43

回答

1

清單可以嵌入到可執行文件(這是首選)或外部文件中,放置在您描述的名爲文件名旁邊。如果存在嵌入式清單,則會忽略外部清單。對於啓動EXE,這全部由Windows執行,並且不受exe文件中代碼的影響。對於加載DLL,雖然這可能會受到編寫代碼的影響,但它不會更改UAC行爲,因爲它不是進程邊界。

至於當您將清單請求asInvoker旁邊的清單放到清單上時,是否以管理員身份啓動時是否表示您創建了有效的清單,這取決於清單不在清單時發生的情況。由於您提到了InstallShield,因此您可以複製模板清單文件(例如其<InstallShield>\Support\setupexe.invoker.manifest)以確保您的語法正確。

重新閱讀您的問題後,我意識到您希望它以管理員身份啓動。爲此,您需要申請管理權限,因此您應該有requireAdministrator而不是asInvoker,或者將其取代setupexe.admin.manifest

+0

這真的是很棒的信息,謝謝邁克爾! 我也重讀了關於Manifests的MSDN文章,並在它說「應該」被包含爲資源時點擊了一些內容,並且將我以前使用資源編輯器的方式拼湊在一起,然後假定我可以編輯第3版第三方可執行文件來應用這個requestedExecutionLevel修改 - 到目前爲止,它看起來像它解決了問題! :) – Jester 2014-09-05 04:47:15