我有使用MSI安裝程序安裝的Windows窗體應用程序(C#,NET 3.5)。 在這個應用程序中,我有一個按鈕,當按下時打開一個具有特定URL的瀏覽器。 我使用安裝後C#Windows窗體不打開默認瀏覽器
Process.Start(url);
打開瀏覽器。 這在調試時正常工作,但在安裝之後,它的結果並不理想。例如。
- 如果我安裝了Just Me選項,我打開了默認的帶有當前設置的 瀏覽器(FF)。
- 如果我跟每個人都選擇安裝它,當我按下按鈕 它會打開一個版本的IE有任何的我最近設置 (代理,工具欄顯示等)
至於我能告訴這個問題是由安裝時與應用程序關聯的用戶造成的。
考慮到用戶可能需要代理和個人瀏覽器設置,並且Just Me,Everyone的選擇應該由用戶決定。什麼是最好的課程?
我嘗試使用
ProcessStartInfo.UserName = Environment.UserName
調用的Process.Start(URL)與登錄用戶當前但它也需要一個密碼,並要求憑據是不是一種選擇。
你有沒有其他的建議,我是否錯誤地使用了Process.Start(),在安裝過程中是否有需要設置的設置,有什麼我錯過了?
UPDATE: 使用Process Explorer中的data_smith建議我注意到以下幾點:
- 如果我安裝了每個人的應用程序將在NT AUTHORITY \ SYSTEM用戶,因此未配置的瀏覽器下啓動。
- 如果我安裝只用我的應用程序中選擇它 下啓動當前用戶
有沒有一種方法,而無需在當前用戶下要求憑證,讓應用程序啓動(在Windows啓動)甚至儘管它是爲大家安裝的?
UPDATE:繼data_smith建議使用的ShellExecute,我能夠解決的問題,並獲得所需的行爲的建議here和here。
主要問題是當安裝程序完成應用程序啓動Process.Start();這會以NT AUTHORITY \ SYSTEM用戶(用戶安裝程序在其下運行)啓動應用程序,因此由此應用程序打開的所有瀏覽器也將在SYSTEM用戶下。通過使用data_smith的建議和上面鏈接的建議,我能夠在當前用戶下啓動該進程。
計算機重新啓動後,應用程序將以正確的用戶身份啓動,因爲這是通過註冊表項配置的。
你是否從安裝程序運行你的應用程序? – ogggre 2012-04-20 13:32:39
安裝應用程序後立即開始,它始終在機器啓動時開始。它位於系統托盤中。 – Constantin 2012-04-20 13:36:15
我認爲@ogggre問的是,你的應用程序是否由安裝程序啓動?這可能是一個「憑據」相關的問題。使用ProcExp(由SysInternals)查看您的程序的父項。 – data 2012-04-20 15:51:32