注册表在Windows2008下读不到问题, 已经测试delphi7和xe都不可以 |
|
delphi12345
一般會員 發表:1 回覆:0 積分:0 註冊:2014-07-20 發送簡訊給我 |
[code delphi] reg:TRegistry; list:tstringlist; begin list:=tstringlist.create; reg:=TRegistry.Create; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('software\',false); reg.GetKeyNames(list); Writeln(list.text); Halt; [/code] 你会发现software键值下很多都读取不到, 最初我以为我是delphi7的问题, 后来使用了xe编译, 在windows2008下问题依旧 问题是在2008下使用 reg query hklm\software命令 就可以完全的读取到 |
xiaolaba
一般會員 發表:10 回覆:17 積分:5 註冊:2010-05-15 發送簡訊給我 |
可能是 UAC 的問題, win7/ win8 都會
你看看 reg.OpenKey 傳回來的值就可以判斷 win32 用 RegOpenKeyEx 俺最近做過 編譯時選 admin Return valueIf the function succeeds, the return value is ERROR_SUCCESS.If the function fails, the return value is a nonzero error code defined in Winerror.h. You can use the FormatMessage function with the FORMAT_MESSAGE_FROM_SYSTEM flag to get a generic description of the error. ===================引 用 delphi12345 文 章=================== [code delphi] reg:TRegistry; list:tstringlist; begin list:=tstringlist.create; reg:=TRegistry.Create; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('software\',false); reg.GetKeyNames(list); Writeln(list.text); Halt; [/code] 你会发现software键值下很多都读取不到, 最初我以为我是delphi7的问题, 后来使用了xe编译, 在windows2008下问题依旧 问题是在2008下使用 reg query hklm\software命令 就可以完全的读取到
------
http://xiaolaba.wordpress.com |
ANDY8C
資深會員 發表:114 回覆:582 積分:299 註冊:2006-10-29 發送簡訊給我 |
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
|
ANDY8C
資深會員 發表:114 回覆:582 積分:299 註冊:2006-10-29 發送簡訊給我 |
若問題出在這裡....不知這問題有解嗎?
===================引 用 sryang 文 章=================== 註冊表也有區分 x64 跟 x86 的 x86 的程式在 x64 OS 要讀取 HKLM\Software 時,會自動重導至 HKLM\Software\WoW6432Node 這就是你說的「讀不到」的原因
------
--------------------------------------- 偶爾才來 KTOP ,交流條碼問題,在 FB [條碼標籤達人] 社團留言,感恩. |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
這當然有解啦!
1. 你要先自行判斷 os 系統是 32 或 64 (這網路上有提供source code 可參考) 2. 如果 os 是 64, 註冊表要用標準的 node, 如果是32則要加 Wow64 (要看你要讀那裡的表) ===================引 用 ANDY8C 文 章=================== 若問題出在這裡....不知這問題有解嗎? ===================引 用 sryang 文 章=================== 註冊表也有區分 x64 跟 x86 的 x86 的程式在 x64 OS 要讀取 HKLM\Software 時,會自動重導至 HKLM\Software\WoW6432Node 這就是你說的「讀不到」的原因 |
xiaolaba
一般會員 發表:10 回覆:17 積分:5 註冊:2010-05-15 發送簡訊給我 |
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
在 x64 的 OS 之下,應用程式想要讀取 HKLM\Software 時,OS 會自動分流
x86 應用程式讀取到的其實是 HKLM\Software\WOW6432Node 就像 C:\Windows\System32 目錄,x86 應用程式取到的其實是 C:\Windows\SysWOW64 是一樣的意思 所以不要再想 x86 應用程式在 x64 作業系統中要讀取真正的 HKLM\Software 這件事情了 解法就是寫一個 x64 的應用程式來讀取
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/ |
stacker_liew
中階會員 發表:59 回覆:168 積分:65 註冊:2004-05-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |