64bit作業系統的重定向

2022-05-05 23:48:16 字數 1790 閱讀 4781

64位作業系統下拷貝檔案重定向問題

問題:installshield2009安裝包在win 7 x64安裝,需要把檔案複製到windows\system32 下面 可是系統會自動複製到windows\syswow64下面,查一下來是檔案自動轉向

原因:64位作業系統有自動重定向功能,即使寫死了拷貝到c:\windows\system32,你還是會沮喪地發現檔案被拷貝到了c:\windows\syswow64下,簡直令人抓狂

解決方法:只要在複製**前加上disable(wow64fsredirection);就可以了

64位windows的登錄檔重定向

錯誤現象:公司的產品在install的時候找不到sqlserver,環境是windows server 2008 for x64, sqlserver 2008 x64, 裝在一台機器上。

很簡單就重現了。檢視了下安裝**,似乎也沒有問題,因為安裝程式讀取登錄檔software\\microsoft\\microsoft sql server\\100\\鍵下面的值來判斷sqlserver 2008的路徑等等資訊,而這段**用了好長時間,並且在測試機器的登錄檔中這個鍵是沒有問題的,裡面的路徑資訊也是正確的。

後來折騰了半天,發現問題原因是:產品的installer是32位的程式。在64位的windows系統中,如果某個程式是32位的,那麼當它讀取登錄檔的時候,windows會自動來做重定向。所以,32位的installer,在讀取上面的那個鍵的時候,實際上讀取的是software\\wow6432node\\microsoft\\microsoft sql server\\100\\ 這個鍵。而這個鍵是不存在的,自然就出錯了。

解決方法也比較簡單,加上讀取登錄檔的引數regdb_option_wow64_64key 就ok了。但是測試的時候又出現了問題。在64位windows,32位的sqlserver 2008的時候該bug再次出現。

同樣的查詢了一下,猜測原因是32位的sqlserver 2008在安裝的時候,安裝程式自然是32位的。那麼當安裝程式在寫登錄檔software\\microsoft\\microsoft sql server\\100\\ 的時候自動被系統重定向到了software\\wow6432node\\microsoft\\microsoft sql server\\100\\。而我們的程式因為啟用了regdb_option_wow64_64key,所以不會被重定向,自然讀取就失敗了。

實際在64位windows server中安裝了乙個32位的sqlserver,證實了這個猜測。

最後問題解決步驟:

1. 檢測系統, 如果是32位的,直接讀取。因為32位的windows沒有重定向這個說法。

這一步對於32位系統直接返回了,那麼下面都是針對64位系統。

2. 啟用regdb_option_wow64_64key, 讀取software\\microsoft\\microsoft sql server\\100\\. 因為當前系統是64位的,而且啟動了這個引數,那麼將直接讀取這個key。如果成功,說明系統中的是sqlserver 2008 64位;進行讀取,返回;

3. 禁用regdb_option_wow64_64key, 讀取software\\microsoft\\microsoft sql server\\100\\. 因為當前系統是64位的,而installer是32位的,所以系統要做自動的重定向,會重定向到software\\wow6432node\\microsoft\\microsoft sql server\\100\\。如果系統中安裝了32位的sqlserver 2008,那麼會在這個key下面讀出相應的值。如果讀出了,返回;

4. 上面都沒有讀出,返回錯誤(sqlserver沒找到)。

32bit和64bit的區別

一般指的是cpu 332bit 普通的x86架構 i386,i586,i686 64bit 僅指x86 64架構 amd64,em64t amd64的位技術是在原始32位x86指令集的基礎上加入了x86 64擴充套件64位x86指令集,使這款晶元在硬體上相容原來的32位x86軟體,並同時支援x86 ...

64bit系統下操作登錄檔的注意事項

1 登錄檔位置 64bit 系統 windows server 2008 r2 只有64bit 系統 的登錄檔分 32 位登錄檔項和 64位登錄檔項兩部分。在 64bit 系統下,通過 regedit 中檢視到指定路徑下的登錄檔項均為 64位登錄檔項,而 32位登錄檔項被重定位到 hkey loca...

64bit系統下操作登錄檔的注意事項

1 登錄檔位置 64bit 系統 windows server 2008 r2 只有64bit 系統 的登錄檔分 32位登錄檔項和 64位登錄檔項兩部分。在64bit系統下,通過regedit中檢視到指定路徑下的登錄檔項均為64位登錄檔項,而32位登錄檔項被重定位到 hkey local machi...