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

讀取登錄檔資訊失敗!!

尚未結案
yedda
一般會員


發表:13
回覆:27
積分:8
註冊:2002-07-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-05 16:09:36 IP:61.218.xxx.xxx 未訂閱
若在WinXP中使用電腦系統管理員的身分登入,執行一支抓取登錄檔中某個字串值的程式,結果都ok.... 但若使用受限制的帳戶登入執行,便讀不到了,因為OpenKey就失敗了,這下該如何解決呢?
william
版主


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

發送簡訊給我
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-05 16:53:01 IP:61.222.xxx.xxx 未訂閱
使用RegSetKeySecurity更改權限 或 AdjustTokenPrivileges 取得權限。 可以參考在 Win2000 關機的程式。 取得關機權限是與這個問題相同的 補一下: 如果需要讀寫登錄檔,使用這種方式。 發表人 - wameng 於 2004/10/05 17:11:54
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-05 16:59:25 IP:203.95.xxx.xxx 未訂閱
或是直接使用 OpenKeyReadOnly 這個 function 來取讀亦可, 如,    
var
  reg: TRegistry;
begin
  reg:= TRegistry.Create;
  reg.RootKey := HKEY_LOCAL_MACHINE;
  if reg.OpenKeyReadOnly('SOFTWARE\xxx') then
  begin
    Result := reg.ReadString('Path');
  end;
  reg.Free;
end;
yedda
一般會員


發表:13
回覆:27
積分:8
註冊:2002-07-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-05 17:30:12 IP:61.218.xxx.xxx 未訂閱
引言: http://delphi.ktop.com.tw/topic.php?topic_id=44340 http://pywong.hk.st http://www.lazybones.ca
嗯!!現在讀是讀的到了...但是要寫入資訊就出現 Failed to set data for 'con3' ....我用了以下的寫法... Rego.Access := KEY_WRITE; Rego.WriteString('con3','AAA'); 好像也無法寫入ㄟ...
william
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-05 17:44:51 IP:147.8.xxx.xxx 未訂閱
引言: 嗯!!現在讀是讀的到了...但是要寫入資訊就出現 Failed to set data for 'con3' ....我用了以下的寫法... Rego.Access := KEY_WRITE; Rego.WriteString('con3','AAA'); 好像也無法寫入ㄟ...
You need to set proper permission... or use HKEY_CURRENT_USER. http://pywong.hk.st http://www.lazybones.ca
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-05 17:51:22 IP:61.222.xxx.xxx 未訂閱
主要是因為權限的問題。 因此 william 大大使用R.Access := KEY_READ; 避開無法寫入權限的問題。 如果要能寫入則必須RegSetKeySecurity更改權限。 這是 Windows 管理權限的問題。 要不然每個駭(黑)客,幹嘛! 動不動就要取得 Administrator 權限的原因。 發表人 - wameng 於 2004/10/05 17:56:36
yedda
一般會員


發表:13
回覆:27
積分:8
註冊:2002-07-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-10-06 11:39:47 IP:202.181.xxx.xxx 未訂閱
引言: 主要是因為權限的問題。 因此 william 大大使用R.Access := KEY_READ; 避開無法寫入權限的問題。 如果要能寫入則必須RegSetKeySecurity更改權限。 這是 Windows 管理權限的問題。 要不然每個駭(黑)客,幹嘛! 動不動就要取得 Administrator 權限的原因。 發表人 - wameng 於 2004/10/05 17:56:36
可否請問一下該如何實作 RegSetKeySecurity 的方式來更改權限呢?!謝謝~~~
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-10-06 12:20:55 IP:61.222.xxx.xxx 未訂閱
我再補充一點!以免您誤會我的意思! 大家都知道 NT 級作業系統(win2000/XP) 都有權限的問題。 如果不是管理者的身份。 通常您只能針對 HKEY_CURRENT_USER 以下的鍵值 讀寫。 OK!所以問題就來了! 我不知道您的需求,是在沒有權限的情況下面修改登錄表的值 {嘿嘿!那是駭客主要幹的事 當然可能可以透過 Windows的BUG作處理} 再不然 您可以透過 regedt32 用 AdminiStrator身份下去改使用權限可以 讓 Everyone 讀寫。 也可以透過 JCL(JclSecurity) 設定AllowRegKeyForEveryone 權限。
yedda
一般會員


發表:13
回覆:27
積分:8
註冊:2002-07-21

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-10-06 14:51:26 IP:202.181.xxx.xxx 未訂閱
引言: 我再補充一點!以免您誤會我的意思! 大家都知道 NT 級作業系統(win2000/XP) 都有權限的問題。 如果不是管理者的身份。 通常您只能針對 HKEY_CURRENT_USER 以下的鍵值 讀寫。 OK!所以問題就來了! 我不知道您的需求,是在沒有權限的情況下面修改登錄表的值 {嘿嘿!那是駭客主要幹的事 當然可能可以透過 Windows的BUG作處理} 再不然 您可以透過 regedt32 用 AdminiStrator身份下去改使用權限可以 讓 Everyone 讀寫。 也可以透過 JCL(JclSecurity) 設定AllowRegKeyForEveryone 權限。
ㄣ~~我瞭解了~~謝囉!!
系統時間:2024-11-23 11:58:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!