如下所示是一个.REG文件中的内容,在DELPHI程序中怎么样才能把它写到注册表中呢?要是能写成函数就更好了,把 '[HKEY_CLASSES_ROOT\.386];"bin"=hex:ff,ad,27,98,5a,bf,fa,67,2b,fa,db,a7,89,2a,bb,fb,ab,f7,82,fb,ab,f7,85,\
38,7b,ff,bf,87,45,a9,84,36,ba,bf,af,89,74,af,af,a7,82,ff,a8,aa,89,af,af,89,\
24,af,a8,5f,af,89,af' 作为一个STRING类型的参数。
REGEDIT4[HKEY_CLASSES_ROOT\.386]
"bin"=hex:ff,ad,27,98,5a,bf,fa,67,2b,fa,db,a7,89,2a,bb,fb,ab,f7,82,fb,ab,f7,85,\
38,7b,ff,bf,87,45,a9,84,36,ba,bf,af,89,74,af,af,a7,82,ff,a8,aa,89,af,af,89,\
24,af,a8,5f,af,89,af
38,7b,ff,bf,87,45,a9,84,36,ba,bf,af,89,74,af,af,a7,82,ff,a8,aa,89,af,af,89,\
24,af,a8,5f,af,89,af' 作为一个STRING类型的参数。
REGEDIT4[HKEY_CLASSES_ROOT\.386]
"bin"=hex:ff,ad,27,98,5a,bf,fa,67,2b,fa,db,a7,89,2a,bb,fb,ab,f7,82,fb,ab,f7,85,\
38,7b,ff,bf,87,45,a9,84,36,ba,bf,af,89,74,af,af,a7,82,ff,a8,aa,89,af,af,89,\
24,af,a8,5f,af,89,af
解决方案 »
- 使用OleContainer来显示EXCEL,如何屏蔽右键菜单?
- 我是一个初学者,对之前回复的 New(Pint); Pint^ := 11; OneNode.Data := Pint;有点不懂啊?能解释一下吗?多谢啊!
- 关于infopower3000(wwdbgrid)的问题
- 有什么办法可以查出,一样的窗口,有几个...
- 请高手帮我看以下很慢很慢的SQL查询问题,在线??????
- 将aceess(*.mdb)数据库转换为prardox(*.db)类型的数据库方法?急!!!
- 哪位帮忙解决;sql server 的备份使用ado连接可以,但odbc不行
- DLL中使用多线程间歇性未响应
- LoginDialog('a', 'b', 'c')为什么通不过?
- 坦克城市的疑惑?
- 怎样编程实现通过调制解调器发送传真.
- 【关于WINDOWS托盘图标的修改问题】
var
MyReg:TRegistry;
begin
MyReg:=TRegistry.Create;
MyReg.RootKey:='HKEY_LOCAL_MACHINE';
if TheReg.OpenKey('关键字',True) then
begin
TheReg.WriteString('KKKKKK','KKKK');
TheReg.CloseKey;
end;
TheReg.Free;
如果是二进制的,用下面函数
procedure WriteBinaryData(const Name: String; var Buffer; BufSize: Integer);
具体可参考帮助
var
registerTemp : TRegistry;
bData : array[ 0..0 ] of byte; begin
registerTemp := TRegistry.Create;
registerTemp.RootKey := HKEY_LOCAL_MACHINE;
if registerTemp.OpenKey('SOFTWARE\ACD Systems\ACDSee',True) then
begin
registerTemp.WriteString('abc', '1234567' );
bData[0] := 0;
bData[1] := 1;
bData[2] := 1;
bData[3] := 1;
MyReg.CreateKey('Passwd'); //建一个夹子
registerTemp.WriteBinaryData( 'Exclusive', bData, 4 ); //在注册表中表现为00 01 01 01 这就是二进制数据
registerTemp.WriteCurrency('ab_boolean',$1); registerTemp.WriteInteger('ab_ex',$123); registerTemp.WriteExpandString('abcde','123'); end;
registerTemp.CloseKey ;
registerTemp.Free;
end;
获取注册表中二进制的键值
uses Registry; procedure TForm1.Button1Click(Sender: TObject);
var
reg : TRegistry;
ts : TStrings;
i : integer;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_CURRENT_USER;
reg.LazyWrite := false;
reg.OpenKey( 'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', false);
ts := TStringList.Create;
reg.GetvalueNames(ts);
for i := 0 to ts.Count -1 do
begin
Memo1.Lines.Add(ts.Strings[i] + ' = ' + reg.ReadString(ts.Strings[i]));
end;
ts.Free;
reg.CloseKey;
reg.free;
end;
2.
var
reg:tregistry;
len:integer;
p:PByte;
DataInfo:TRegDataInfo;
begin
reg:=tregistry.Create;
reg.RootKey:=hkey_local_machine;
reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\MS-DOS Emulation',False);
try
Reg.GetDataInfo('DisplayParams',DataInfo);
getmem(p,DataInfo.DataSize);
reg.ReadBinaryData('DisplayParams',p^,DataInfo.DataSize);
finally
freemem(p);
reg.CloseKey;
reg.Free;
end;
end;
长度不错定就用指针啊,或动态数组,链表什么的都行