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

通過註冊表獲取系統的硬體環境變數?

尚未結案
qalin
一般會員


發表:20
回覆:45
積分:13
註冊:2003-07-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-04 19:57:35 IP:221.228.xxx.xxx 未訂閱
我想通過註冊表獲取系統的硬體環境變數,可是在win2000下用Reg.OpenKey('\SYSTEM\CurrentControlSet\Enum',false)卻無論如何打不開,不知何故?請各位大蝦不吝賜教?謝謝! (用微軟自己的REGEDIT卻可以打開) 或者有無其他方法可以獲取一樣詳細的資料?(用API好象讀不到這樣詳細的資料)
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-04 21:28:34 IP:61.218.xxx.xxx 未訂閱
引言: 我想通過註冊表獲取系統的硬體環境變數,可是在win2000下用Reg.OpenKey('\SYSTEM\CurrentControlSet\Enum',false)卻無論如何打不開,不知何故?請各位大蝦不吝賜教?謝謝! (用微軟自己的REGEDIT卻可以打開) 或者有無其他方法可以獲取一樣詳細的資料?(用API好象讀不到這樣詳細的資料)
qalin您好:
試試 Reg.OpenKey('\\SYSTEM\\CurrentControlSet\\Enum',false)
/*生活是一種藝術,用心生活才能享受生活*/
qalin
一般會員


發表:20
回覆:45
積分:13
註冊:2003-07-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-04 22:31:17 IP:221.228.xxx.xxx 未訂閱
謝謝 >
hcker
中階會員


發表:95
回覆:118
積分:62
註冊:2003-02-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-05 13:59:17 IP:218.19.xxx.xxx 未訂閱
不可能的,請將你的代碼全部post出來,關憑一句代碼我們很難幫你判斷。 發表人 - hcker 於 2004/02/05 20:21:21
qalin
一般會員


發表:20
回覆:45
積分:13
註冊:2003-07-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-05 22:31:51 IP:221.228.xxx.xxx 未訂閱
謝謝hcker的回復。 用以下代碼一試便知我說的不假。 var   R: TRegistry; begin   R := TRegistry.Create;   R.RootKey := HKEY_LOCAL_MACHINE;   if R.OpenKey('\SYSTEM\CurrentControlSet\Enum',false) then     memo1.Lines.Add('Found [Enum]!')   else     memo1.Lines.Add('Not Found [Enum]!');   if R.OpenKey('\SYSTEM\CurrentControlSet\Hardware Profiles', False) then     memo1.Lines.Add('Found [Hardware Profiles]!')   else     memo1.Lines.Add('Not Found [Hardware Profiles]!'); end; 不僅如此,還根本無法寫入,見以下截圖: 請各位大蝦繼續賜教……
hcker
中階會員


發表:95
回覆:118
積分:62
註冊:2003-02-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-02-06 08:48:40 IP:218.19.xxx.xxx 未訂閱
你的 if R.OpenKey('\SYSTEM\CurrentControlSet\Enum',false) then memo1.Lines.Add('Found [Enum]!') 是判斷是否有這個 然後 怎樣吧? 如果是判斷是否有這個鍵,不是用這個方法,這個openkey是打開一個註冊表節點,如果是false那麼不會建立一個 enum 但是如果是true 在openkey的時候就會自動建立一個enum If R. HasSubKeys 判斷是否有子鍵 If R.ValueExists 判斷是否有值 If R.KeyExists 判斷是否有這個鍵 用其中一個進行判斷吧,我想第一個應該比較適合你, 如果你想將裏面的項目都列出來,其實論壇裏已經有這樣的例子了,你可以使用 R. GetKeyNames 來操作。 不知道你想具體實現什麼樣的功能。 ----------要知道自己有多笨,到DelphiK.Top來看看----------
qalin
一般會員


發表:20
回覆:45
積分:13
註冊:2003-07-18

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-02-06 10:00:30 IP:221.228.xxx.xxx 未訂閱
1、請教一下hcker大大,在無法打開'\SYSTEM\CurrentControlSet\Enum'的情況下,你是如何讀取'\SYSTEM\CurrentControlSet\Enum'下的內容的,好象辦不到吧? >< face="Verdana, Arial, Helvetica">引言: 你的 if R.OpenKey('\SYSTEM\CurrentControlSet\Enum',false) then memo1.Lines.Add('Found [Enum]!') 是判斷是否有這個 然後 怎樣吧? 如果是判斷是否有這個鍵,不是用這個方法,這個openkey是打開一個註冊表節點,如果是false那麼不會建立一個 enum 但是如果是true 在openkey的時候就會自動建立一個enum If R. HasSubKeys 判斷是否有子鍵 If R.ValueExists 判斷是否有值 If R.KeyExists 判斷是否有這個鍵 用其中一個進行判斷吧,我想第一個應該比較適合你, 如果你想將裏面的項目都列出來,其實論壇裏已經有這樣的例子了,你可以使用 R. GetKeyNames 來操作。 不知道你想具體實現什麼樣的功能。
qalin
一般會員


發表:20
回覆:45
積分:13
註冊:2003-07-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-02-11 10:58:47 IP:221.228.xxx.xxx 未訂閱
本論壇中的相關例子沒有一個可以讀出'Enum'下的內容的,估計是又得需要微軟的什麽不公開的函數才能讀取,各位老大再幫幫忙嘛...... 如果再沒有提示,我就結貼啦.
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-02-11 11:47:43 IP:147.8.xxx.xxx 未訂閱
Security problem only....    
var
  R: TRegistry;
begin
  R := TRegistry.Create;
  R.RootKey := HKEY_LOCAL_MACHINE;
  R.Access := KEY_READ;
  if R.OpenKey('\SYSTEM\CurrentControlSet\Enum',false) then
    memo1.Lines.Add('Found [Enum]!')
  else
    memo1.Lines.Add('Not Found [Enum]!');
  if R.OpenKey('\SYSTEM\CurrentControlSet\Hardware Profiles', False) then
    memo1.Lines.Add('Found [Hardware Profiles]!')
  else
    memo1.Lines.Add('Not Found [Hardware Profiles]!');
end;
qalin
一般會員


發表:20
回覆:45
積分:13
註冊:2003-07-18

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-02-11 12:29:01 IP:221.228.xxx.xxx 未訂閱
> <>< face="Verdana, Arial, Helvetica">引言: Security problem only....
var
  R: TRegistry;
begin
  ......
系統時間:2024-05-07 17:28:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!