怎样在注册表中读取本机的共享目录(要求得到字符串)?
因为在注册表中,本机的共享信息是以二进制形式存储的,所以在读出二进制数据后,
如何再转换为字符串???
我这样试过:
procedure TForm1.Button1Click(Sender: TObject);
var Reg: TRegistry;  s: String;
    BBuf  :array [0..1500] of byte; i: Integer;
begin      
    Reg:=TRegistry.Create;
    Reg.RootKey:=HKEY_LOCAL_MACHINE;
    Reg.OpenKey('SYSTEM\CurrentControlSet\Services\LanmanServer\Shares', False);
    Reg.ReadBinaryData('共享', BBuf, 1501) ;
    For i:=0 to 1500 do
        s:=s+chr(BBuf[i]);
    Reg.CloseKey;
    Reg.Free;
    Memo1.Lines.Add(s);
end;
但是得出的结果只有前几个字符:CSCFlags=0
请高手指点。

解决方案 »

  1.   

    如只是名称的话:
    Reg.ReadBinaryData('共享', BBuf, 1501) ;改为REG.GETVALUENAMES(MEMO1.LINES)
      

  2.   

    你的程序没有错,不过要多个判断就好了,就是把:
        For i:=0 to 1500 do
            s:=s+chr(BBuf[i]);
    改成:
        For i:=0 to 1500 do
        begin
           if Chr( BBUf[i] ) = '' then
             s:= s + ' '
           else
            s:=s+chr(BBuf[i]);
        end;
    这样就行了,我试过了,你试试看。
      

  3.   

    shilinqun(群群),果然是这样,虽然后面全是乱吗。不过这是为什么呢?