簡體   English   中英

安裝后以默認用戶(不是SYSTEM用戶)自動啟動應用程序

[英]Auto Launch application after Installation in default user (not in SYSTEM user)

我已經創建了一個簡單的Windows應用程序,以及它的安裝程序( Setup project )。

由於我想在安裝后自動啟動應用程序,因此在Installer.cs中添加了此腳本。

public override void Commit(System.Collections.IDictionary savedState)
{
    string appPath = Context.Parameters["AssemblyPath"].ToString();
    System.Threading.Thread.Sleep(500);
    System.Diagnostics.Process.Start(appPath, "2");
}

應用程序啟動完美,但以SYSTEM user身份運行。

在此處輸入圖片說明

我希望自動啟動的應用程序在打開MSI的Default user運行。

以前有一個問題 ,詢問如何在安裝后啟動應用程序。 不幸的是,被標記為已接受答案的答案鏈接到與您現有的代碼項目文章基本相同的代碼項目-而且,您已經注意到,這樣做的缺點是可能以錯誤的帳戶運行應用程序。

彼得·凱利(Peter Kelly)的答案鏈接到亞倫·斯特納(Aaron Stebner)博客上帖子 ,其中詳細介紹了一種更正確的方法-您需要在安裝執行序列中添加一個操作,以在安裝完成啟動可執行文件。 他包括一個腳本,以對已生成的msi文件進行必要的更改。

使用其他安裝程序技術( Wix ,Installshield等)時,可能存在直接在安裝程序項目中進行配置的方法。 除了使用Aaron的后期構建步驟外,無法通過Visual Studio安裝項目來實現。 另一個喜歡避免VS Setup項目的人。

  • 從注釋中,我很確定您有一個啟動程序,該啟動程序在開始時會升高,然后您的安裝會升高。 最后,當您啟動應用程序時,它將繼承執行上下文。
  • 另一種可能性是您以延遲的自定義操作而不是立即的自定義操作啟動應用程序。 立即自定義操作始終在當前用戶的上下文中運行,而延遲操作通常在系統上下文中運行,因為與直接自定義操作相反,它們應該對系統進行更改。

沒有更多細節,很難說出您的應用程序為何在系統上下文中啟動。

簡而言之,您必須在安裝開始時保存當前用戶的上下文,在系統上下文中運行安裝本身,然后在安裝完成后,在原始用戶的上下文中啟動應用程序。

有關此方法的更多詳細信息,請參閱從UAC管理員級別進程以降低的特權啟動進程

我從這篇文章中得到了解決方案

啟動Windows服務並啟動cmd

這解決了我的SYSTEM用戶問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM