線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2652
推到 Plurk!
推到 Facebook!

64位元系統如何將檔案複製到Windows\System32

缺席
blue
中階會員


發表:115
回覆:106
積分:59
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2013-08-19 09:02:18 IP:122.146.xxx.xxx 訂閱
Hi,各位先進大定好:
小弟寫了Shell extension的程式(64位元),
因該程式會叫 3 part 的 DLL,
經測試,該 DLL必須存在於 Windows\system32中(64位元),
因此,我的程式必須在安裝時將該 DLL 複製到 Windows\System32 中,
但是,安裝時卻是複製到 Windows\SysWOW64 中,
請問,該如何解這個問題?
謝謝!
sryang
尊榮會員


發表:38
回覆:742
積分:876
註冊:2002-06-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2013-08-19 13:13:21 IP:114.35.xxx.xxx 訂閱
試試看打包成 .msi 檔
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
blue
中階會員


發表:115
回覆:106
積分:59
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2013-08-19 13:57:46 IP:122.146.xxx.xxx 訂閱
Hi,感謝sryang大大指導:
因為小弟不知如何打包成 .msi,
DLL 檔案是使用 Resource 方式包進執行檔,
安裝時再以 ResourceStream 儲存到檔案,
不過,目前小弟已找到解法,
複雜的是使用
function Wow64DisableWow64FsRedirection(out OldValue: PVOID): BOOL; stdcall; external 'Kernel32.dll'; //only for JWA < 2.4
function Wow64RevertWow64FsRedirection(const OldValue: PVOID): BOOL; stdcall; external 'Kernel32.dll'; //only for JWA < 2.4
比較簡單的是將 Windows\System32\ 更改為 Windows\SysNative\
謝謝!

===================引 用 sryang 文 章===================
試試看打包成 .msi 檔
P.D.
版主


發表:571
回覆:3888
積分:3677
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2013-08-20 22:17:59 IP:220.136.xxx.xxx 未訂閱
基本上, 在63bit的windows會自動判斷 版本位元, 如果是32位元的, 會轉到 SYSWOW64中, 只有身份純正的"純'64, 才會進到 SYSTEM32的殿堂, 
所以我懷疑你的 第3方控件提供的DLL並不是 "純" 64
===================引 用 blue 文 章===================
Hi,各位先進大定好:
小弟寫了Shell extension的程式(64位元),
因該程式會叫 3 part 的 DLL,
經測試,該 DLL必須存在於 Windows\system32中(64位元),
因此,我的程式必須在安裝時將該 DLL 複製到 Windows\System32 中,
但是,安裝時卻是複製到 Windows\SysWOW64 中,
請問,該如何解這個問題?
謝謝!
blue
中階會員


發表:115
回覆:106
積分:59
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2013-08-21 09:54:21 IP:122.146.xxx.xxx 訂閱
Hi,感謝 P.D. 大大的指導:
該 DLL 應該是 64位元,
否則在 64位元檔案總管無法作用,
小弟試過,單純下檔案複製,
CopyFile(PChar('C:\Temp\test.txt'), PChar('C:\Windows\System32\test.txt'), true);
但,會 " 依程式所編譯的目標平台 " 為32位元或是64位元而複製到 SysWOW64 或是 System32中
只是,小弟不想為此需編譯成 32位元及64位元二個版本,
謝謝!

===================引 用 P.D. 文 章===================
基本上, 在63bit的windows會自動判斷 版本位元, 如果是32位元的, 會轉到 SYSWOW64中, 只有身份純正的"純'64, 才會進到 SYSTEM32的殿堂,
所以我懷疑你的 第3方控件提供的DLL並不是 "純" 64
===================引 用 blue 文 章===================
Hi,各位先進大定好:
小弟寫了Shell extension的程式(64位元),
因該程式會叫 3 part 的 DLL,
經測試,該 DLL必須存在於 Windows\system32中(64位元),
因此,我的程式必須在安裝時將該 DLL 複製到 Windows\System32 中,
但是,安裝時卻是複製到 Windows\SysWOW64 中,
請問,該如何解這個問題?
謝謝!
系統時間:2017-12-15 10:39:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!