2008-09-26 53 views
1

我們有一個MSI安裝程序,用於Windows XP的.Net WinForms應用程序,該應用程序僅作爲管理員進行安裝和運行。用戶在運行時必須登錄到應用程序。客戶希望它在Vista下的用戶帳戶下安裝和運行,並使用他們的Windows帳戶。Vista上多用戶WinForms應用程序的規則

初步瞭解代碼顯示了很多問題;安裝程序將寫入註冊表並將應用程序安裝在C:\ Program Files文件中。應用程序將用戶首選項存儲在註冊表中,將數據寫入C:\ Documents and Settings \ All Users \,並在C:中創建臨時文件。

我想要做的第一件事是將數據文件存儲在System.Environment.CommonApplicationData和System.Environment.LocalApplicationData中的用戶首選項。用戶帳戶可以將應用程序安裝到System.Environment.ProgramFiles?

一個問題是,該應用程序必須是可由任何用戶安裝和卸載的,並且所有用戶共享相同的數據文件。每個用戶都有自己的偏好。

有沒有一本書或網站能夠詳細分析構建符合Vista上多個用戶規則的WinForms應用程序所需的內容?

編輯:我檢查了客戶端和要求只安裝一個用戶帳戶是堅定的,他們正在刪除管理員訪問樓層的工作人員。這排除了管理員安裝的組件和每臺計算機的安裝。

我正在考慮創建一個單獨的數據應用程序,該應用程序可以在地板機器通過遠程連接連接到的管理機器上運行。所有客戶端數據都將存儲在本機上。但是,這個應用程序也必須安裝並在用戶帳戶下運行。

是否有描述Vista用戶應用必須遵循的所有規則的書籍或網站?

回答

0

謝謝你們。我與客戶進行了覈對,並且只有當用戶帳號是安全的時候才需要安裝,他們正在從地板員工中刪除管理員訪問權限。這排除了管理員安裝的組件和每臺計算機的安裝。

我們的解決方案是爲我們的應用程序創建一個新的標準用戶帳戶。需要使用該應用的工作人員必須以該用戶身份登錄。這實際上比在用戶之間共享數據要好,因爲現在我們可以在同一臺機器上爲不同的客戶端託管應用程序。

我還發現在Windows上製作多用戶應用程序的很好的參考,Microsoft Windows 7客戶端軟件徽標技術要求document

1

「的應用程序必須是任何用戶安裝和卸載的」 「所有用戶共享同一數據文件」

你將有麻煩必須同時滿足這些要求。 Vista的新安全功能旨在防止用戶相互之間(以及系統上)的踐踏。

關於我能想到使這項工作的唯一方法是類似於我們如何處理Windows 2000環境中的需求的方式。您構建了兩個組件 - 應用程序的用戶部分和一個管理用戶之間共享信息的系統組件。管理員安裝'共享'組件(其中包括一個Windows服務來運行它),並且每個用戶都安裝'用戶'組件。

我認爲這可能適用於您的場景,但它需要重新使用您的代碼,使用共享文件與服務對話而不是直接訪問這些文件。

當然,您也可以只有一個用戶以管理員身份運行的工具,以在特定位置創建文件夾並授予所需的安全權限。這可能也適用於您的目的。

1

您將遇到問題,允許任何用戶安裝應用程序,並同時訪問共享數據文件。這是因爲你的第一個需求意味着每個用戶的安裝,而第二個意味着每個機器的安裝。讓我解釋 ...

標準(MSI爲主)的安裝可以作用域是無論是每個用戶或每臺機器:

  • 每用戶安裝把安裝程序的用戶的主目錄下的某個地方的文件。該應用程序僅爲該用戶安裝。其他用戶甚至在開始菜單和添加/刪除程序中都看不到該程序。如果他們想要該程序,他們必須將其自己安裝到他們自己的每個用戶區域。因此,可能會安裝多個程序副本,並且每個程序都與其他程序相隔離。這種類型的安裝可以由普通(非管理員)用戶執行,這就是爲什麼他們不能寫入「程序文件」或「所有用戶」等共享區域的原因。
  • 每臺機器安裝可以修改文件系統的共享區域(即「程序文件」或「所有用戶」)。每個用戶在開始菜單和添加/刪除程序中看到相同的程序副本。只有管​​理員用戶可以執行這種類型的安裝。