2012-06-24 33 views
1

我有我自己的安裝程序,我用它來安裝我編寫的幾個應用程序。Windows註冊表重定向是一件「壞事」?

我一直在更新這個程序,以避免應用程序的數據文件更新去用戶的VirtualStore,因爲我讀這是一個「壞事」。我通過將程序和常用數據文件分別存儲在正確的位置來執行此操作,而不是將所有內容都粘貼到Program Files文件中,就像我們以前在XP中所做的那樣。

我現在也在使用SHGetFolderPath(是的,它已棄用,但我仍需要支持我的XP用戶),以獲取已知文件夾而不是拖網註冊表,這是另一個「壞事」(我讀過)。

我試圖做的下一件事是重寫安裝程序代碼,以避免在向HKLM寫入內容時避免將註冊表重定向到Wow6432Node,因爲我認爲這是另一件「壞事」。但是,儘管我可以將應用程序特定的東西放到那裏(比如安裝文件夾,如果用戶決定以非默認方式安裝),殺手就需要將卸載信息放入HKLM \ Software中\微軟\的Windows \ CurrentVersion \卸載。對於在64位系統上運行的32位內容,這將重定向到Wow6432Node。我沒有看到任何方法 - 事實上可能嗎?

+1

編寫你自己的安裝程序而不使用MSI是非常不明智的。 –

+0

爲什麼?我已經使用了這個多年,取得了巨大的成功。這是非常輕量級和具體到我想要的。你想回答我的問題嗎? –

+0

@JeffG:微星也很輕巧。這是一些非常笨拙的MSI構建器程序(例如InstallShield)。 –

回答

2

UAC註冊表重定向可以合理地描述爲「壞事」,因爲它是專門爲提供與不正確編寫的軟件(即假定將以管理員權限運行的軟件)的兼容性而設計的。

WOW64註冊表重定向是一個不同的野獸;它旨在提供與正確編寫的32位軟件的兼容性。如果你的軟件是32位的,並且沒有特別的需要被64位感知,讓它在模擬環境中運行沒有什麼問題,包括允許註冊表設置被重定向到Wow6432Node。

如果需要,您可以bypass WOW64 registry redirection,但是您不應該任意地這樣做,只要有特定原因。如果WOW64重定向令您擔心,唯一不錯的選擇是提供64位版本的程序。

+1

Right ... Wow6432Node是列出32位軟件卸載程序的正確位置。 –

+0

非常感謝。很好的答案。 WOW64註冊表重定向本身並不會影響我 - 我只是想告訴他這是「正確的事情」,而不僅僅是像VirtualStore這樣可以避免的修復。 –