2010-10-23 103 views
1

我在客戶端的多個機器上安裝了軟件產品。該軟件訪問位於服務器上的數據庫。如何防止過度安裝軟件

我給了他們一個MSI,以便他們可以在其他機器上安裝軟件,如果需要的話。

如何以編程方式限制可安裝軟件的計算機數量?

該軟件以前在HKLM註冊表項中放置了一個值,但Vista和Win 7不允許HKLM密鑰被寫入,所以我現在如何監視安裝?

+0

您如何知道軟件是否安裝?如果他們重新映像硬盤驅動器,或者從一臺或兩臺計算機上卸載它,或者使用您的程序克隆虛擬磁盤,該怎麼辦?當程序「電話回家」訪問服務器上的數據庫時,它只是計數嗎?你可以有多個dbs,一些客戶使用一個,一些客戶使用另一個客戶?當您談論跟蹤軟件問題時,首先想到的就是這些問題。 – 2010-10-23 04:51:06

+0

@JohnK:當應用程序啓動時,它將檢查HKLM註冊表項的工作站ID,如果找不到將被分配。這些工作站ID的列表存儲在數據庫中。如果列表已經處於定義的限制,則不會分配進一步的工作站ID。 – 2010-10-23 05:12:12

+0

@JohnK:但Vista和Win 7不允許應用程序寫入HKLM註冊表項,所以目前的機制需要重新編寫,但是如何? – 2010-10-23 05:59:32

回答

1

有像賽門鐵克客戶端管理套件和服務器管理套件這樣的產品,可以讓您通過網絡對所有軟件進行軟件許可證管理。見here。雖然,恐怕他們是企業產品,可能會以這種方式付出代價。我實際上已經在開發他們兩個。

1

您可能應該讓您的傳統應用程序UAC知道(例如Microsoft instruction for application developers on VistaCode Project tutorial)並要求其特殊權限以繼續使用HKLM或同等服務。一旦您的程序具有適當的權限(例如管理員),它應該能夠繼續在UAC環境中運行,就像它在傳統Windows中一樣。

一個副作用是非管理員將無法正確安裝您的程序,但這在Windows Vista的「新世界」7中並不常見,並且前進的一切都是如此。它看起來像「每個人都是管理員」的理念不會回來。 (注意:我使用術語「管理員權限」,但表示無論您是完成工作所需的最低權限)。

有可能會需要一點的工作,當我看到告誡像這樣的報價:

周邊 安裝

提升過程有點複雜,何去何從 到細節,但被警告 是 需要管理員標誌一個MSI包實際上並沒有 提供完整的管理員 權限。這實際上的行爲 略有不同,並作爲 子集的完整權限運行,除非您使用引導程序 獲得完整的 海拔。很少有安裝程序 需要這些額外的令牌 ,因爲安裝程序的管理員權限通常是足夠的。

好處是一旦您轉換了一個應用程序,您將擁有相應的知識和代碼庫來升級其他程序。

我相信其他人會建議代碼解決方法,這是令人滿意的,可能不會使用HKLM。