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

如何修改REG_MULTI_SZ類型的值?

答題得分者是:kunying
qalin
一般會員


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-21 17:07:52 IP:221.228.xxx.xxx 未訂閱
在win2000的註冊表中有一種類型爲REG_MULTI_SZ,如: --------------------------- [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\TlntSvr] "DependOnService"=hex(7):52,00,70,00,63,00,53,00,73,00,00,00,54,00,63,00,70,00, 49,00,70,00,00,00,00,00 "Description"="允許遠端用戶登錄到系統並且使用命令行運行控制臺程式。" --------------------------- 上面的DependOnService就是REG_MULTI_SZ類型。 這種類型在註冊表裏無法建立,請問各位老大:在delphi中如何修改REG_MULTI_SZ類型的值? (這種類型可以用ReadBinaryData來讀取。) 謝謝!
kunying
一般會員


發表:17
回覆:28
積分:19
註冊:2002-03-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-22 01:10:10 IP:210.68.xxx.xxx 未訂閱
HOWTO: Read a REG_MULTI_SZ From the Registry ms-help://MS.MSDNQTR.2003FEB.1028/enu_kbfoxpro/en-us/foxpro/Q258528.htm    HOWTO: Write a REG_MULTI_SZ Value to the Registry ms-help://MS.MSDNQTR.2003FEB.1028/enu_kbfoxpro/en-us/foxpro/Q258545.htm    Delphi Programming :Write Registry MultiString Value  http://oldlook.experts-exchange.com:8080/Programming/Programming_Languages/Delphi/Q_20733243.html    上面這篇文章中提供解法,我把它貼上來。希望對你有幫助。     
 See if this is what you are after;    uses registry;
...    procedure kg_ReadStrings(const valueName: string; aStrings: TStrings; oReg:TRegistry) ;
var
 valueType : DWORD ;
 valueLen  : DWORD ;
 p, buffer : PChar ;
begin
 aStrings.Clear ;
 SetLastError(RegQueryValueEx(oReg.CurrentKey, PChar(valueName),nil, @valueType,nil, @valueLen)) ;
 if GetLastError = ERROR_SUCCESS then
   if valueType = REG_MULTI_SZ then
   begin
     GetMem(buffer, valueLen) ;
     try
       RegQueryValueEx(oReg.CurrentKey, PChar(valueName), nil, nil, PBYTE(buffer), @valueLen) ;
       p := buffer ;
       while p^ <> #0 do
       begin
         aStrings.Add(p) ;
         Inc(p, lstrlen(p)   1)
       end
     finally
       FreeMem(buffer)
     end
   end
   else
     raise ERegistryException.Create('String list expected')
 else
   raise Exception.Create('Unable read MULTI_SZ value')
end;    procedure kg_WriteStrings(const valueName: string; aStrings: TStrings; oReg:TRegistry) ;
var
 p, buffer : PChar ;
 i         : Integer ;
 size      : DWORD ;
begin
 size := 0 ;
 for i := 0 to aStrings.Count - 1 do
   Inc(size, Length(aStrings [i])   1) ;
 Inc (size) ;
 GetMem(buffer, size) ;
 try
   p := buffer ;
   for i := 0 to aStrings.count - 1 do
   begin
     lstrcpy(p, PChar(aStrings [i])) ;
     Inc(p, lstrlen (p)   1)
   end;
   p^ := #0 ;
   SetLastError(RegSetValueEx(oReg.CurrentKey, PChar(valueName), 0, REG_MULTI_SZ, buffer, size)) ;
   if GetLastError <> ERROR_SUCCESS then
     raise Exception.Create('Unable to write MULTI_SZ value') ;
 finally
   FreeMem(buffer)
 end
end;    ...
var
 Reg : TRegistry ;
 aStr: TStringList ;
begin
 Reg := TRegistry.Create ;
 aStr:= TStringList.Create ;     try
   if Reg.OpenKey('kg_ms',True) then
   begin
     aStr.Add('This is a test to see how to read and write') ;
     aStr.Add('MULTI_SZ type to the system registry.') ;
     aStr.Add('Infomation entered: '   DateToStr(Date)) ;
     kg_WriteStrings('m1',aStr,Reg) ;
     Reg.CloseKey ;
   end ;
 finally
   Reg.Free ;
   aStr.Free ;
 end ;    ...     Reg := TRegistry.Create ;
 aStr:= TStringList.Create ;
 try
   if Reg.OpenKey('kg_ms',False) then
   begin
     kg_ReadStrings('m1',aStr,Reg) ;
     Reg.CloseKey ;         { Clean up our mess by removing the key and value we created }
     Reg.DeleteValue('m1') ;
     Reg.DeleteKey('kg_ms') ;         if aStr.Count >0 then
       {ListBox1.Items.Assign(aStr)}
     else
       {ListBox1.Items.Add('Operation failed') ;}
   end ;
 finally
   Reg.Free ;
   aStr.Free ;
 end ;    ...
________________________ 「有時候你以為天要塌下來了,其實是因為你站歪了!」
------
________________________
「有時候你以為天要塌下來了,其實是因為你站歪了!」
qalin
一般會員


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-23 20:07:44 IP:61.177.xxx.xxx 未訂閱
引言: HOWTO: Read a REG_MULTI_SZ From the Registry ________________________ 「有時候你以為天要塌下來了,其實是因為你站歪了!」
Thank u very much!
系統時間:2024-05-03 11:36:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!