32位程式訪問system32資料夾的問題

因為卡巴斯基在管理中心可以遠端派送程式,有的時候可以利用winrar做成背景自動安裝檔,但有一次要做一個自解壓的要釋放一個文件到system32目錄下,但始終無法成功,在本機執行成功,但遠端派送就是找不到,看記錄是成功的,後來查詢了下資料才明白失敗的原因

因為64位Windows通過System32和SysWoW64兩件文件夾來區分64位和32位的系統文件,當32位的應用程序嘗試訪問System32文件夾的時候,系統會自動把它轉到SysWoW64文件夾,這樣32位應用程序在32位系統和64位系統就都可以運行了,(而不需要爲了64位系統而把System32改成SysWoW64)。

這樣就出現了一個問題,32位的應用程序怎麽訪問真正的System32文件夾呢,即存放64位系統文件的文件夾?答案就是通過SysNative文件夾。這個文件夾並不存在,即在資源管理器中找不到,但當32位的應用程序嘗試訪問這個文件夾時,64位的Windows會把它重定向到真正的System32文件夾,從而提供了一種讓32位應用程序訪問64位系統文件的方法。

回到最開始,因為遠端派送使用的rar製作自解壓,預設都是使用32位的模組去製作,這樣做出來的exe是32位元的,那執行釋放文件到system32下,其實釋放到syswow64下,那如果一定要放到system32下,則是需要是釋放%windir%\sysnative下,文件就會跑到sysmem32下了,或者是使用rar做自解壓的時候選擇用64位的去做了,但這樣遠端派送就只能派到64位元的系統上。

2015.12.02_09h35m00s_001_