我在Visual Studio 2010中設置我的部署項目時遇到問題。使用Windows 7 x64的Im。這是我的問題:VS2010部署項目:多用戶安裝和註冊表項問題
設置應該爲所有用戶安裝我的程序。在安裝過程中,將三個註冊表項寫入HKEY_LOCAL_MACHINE/Software/Something文件夾,其中包含串行,名稱和組織的設置變量值 - [COMPANYNAME],[PIDKEY],[USERNAME]。
會發生什麼:
用戶1(管理員)安裝軟件,輸入自己的用戶名,串行和公司。一切正常。通過使用Registry.LocalMachine.OpenSubKey(path)
,可以找到鑰匙和程序讀取的值。我沒有得到的第一件事是我無法使用regedit.exe找到註冊表項。無論如何,上面的代碼找到了它們。
現在,User2(非管理員)嘗試執行新安裝的程序。安裝程序會再次啓動,並說「等待...以配置...」。 User2的用戶特定文件夾已正確創建。該程序已啓動,但該程序無法找到註冊表項。
現在,最後,User1再次嘗試打開程序。 (註冊表項無法找到。)編輯:註冊表項實際存在,但其值爲空。
所以,我的問題:
- 爲什麼我看不到的註冊表項與註冊表編輯器在安裝後,雖然他們顯然在那裏?
(2.爲什麼註冊表項刪除,當第二個用戶試圖啓動程序的第一次,我怎麼能避免呢?)
編輯: 2.爲什麼註冊表值設置爲空字符串,當第二個用戶第一次嘗試啓動程序時,我該如何避免?
來自奧克蘭的歡呼和感謝!
馬克
1.完美,我永遠不會那麼一個......不知道爲什麼Find函數沒有找到鍵?無論如何,他們在那裏。 User2啓動程序後,註冊表項仍然存在,但值將被空值覆蓋。所以我在問題描述中實際上弄錯了:條目在那裏,但值被設置爲「」。很明顯,「第二個安裝程序」再次執行該條目,而沒有這個值。你有一個想法如何解決? – Marc 2012-03-06 09:06:44
請注意,除非需要64位支持,否則將.NET應用程序編譯爲x86(而不是「任何」應用程序)而不是對Wow6432Node子項進行硬編碼可能更清晰。 – 2012-03-06 12:39:24