H
happygb
Unregistered / Unconfirmed
GUEST, unregistred user!
我在注册表里面写了某类型文件的关联信息代码如下,但是为什么在2K里面正常,在XP里面确总是读出来少一位字符?
Procedure TForm1.RegisterFileType(ft,key,desc,Icon,prg:string);
//ft:文件名后缀,如可以为'.tst'或'afile.tst'
//key:在注册表中的键值,要唯一
//desc:关联程序的描述
//icon:缺省的程序图标,如Application.ExeName+',1',可以缺省
//prg:对应的应用程序
var
myreg : treginifile;
begin
myreg := treginifile.create('');
try
myreg.rootkey := hkey_classes_root; // 根应该为HKEY_CLASSES_ROOT
if key = '' then key := copy(ft,2,maxint)+'_auto_file';
// 如果没给出键值,则自动创建一个
myreg.writestring(ft,'',key); // 写入描述的键值
myreg.writestring(key,'',desc); // 写入描述
if icon <> '' then
myreg.writestring(key+'/DefaultIcon','',icon);
// 写入缺省图标
myreg.writestring(key+'/shell/open/command','',prg+' "%1"');
//写入相关联的应用程序
finally
myreg.free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
RegisterFileType('.xxxx','xxxxfile','xxxx文件加密',Application.ExeName+',1',Application.ExeName);
end;
Procedure TForm1.RegisterFileType(ft,key,desc,Icon,prg:string);
//ft:文件名后缀,如可以为'.tst'或'afile.tst'
//key:在注册表中的键值,要唯一
//desc:关联程序的描述
//icon:缺省的程序图标,如Application.ExeName+',1',可以缺省
//prg:对应的应用程序
var
myreg : treginifile;
begin
myreg := treginifile.create('');
try
myreg.rootkey := hkey_classes_root; // 根应该为HKEY_CLASSES_ROOT
if key = '' then key := copy(ft,2,maxint)+'_auto_file';
// 如果没给出键值,则自动创建一个
myreg.writestring(ft,'',key); // 写入描述的键值
myreg.writestring(key,'',desc); // 写入描述
if icon <> '' then
myreg.writestring(key+'/DefaultIcon','',icon);
// 写入缺省图标
myreg.writestring(key+'/shell/open/command','',prg+' "%1"');
//写入相关联的应用程序
finally
myreg.free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
RegisterFileType('.xxxx','xxxxfile','xxxx文件加密',Application.ExeName+',1',Application.ExeName);
end;