通过注册表设置文件关联

时间:2010-03-02 18:02:07  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:egistry.Create;tryreg.RootKey := HKEY_CLASSES_ROOT;//create a new key --> .pcireg.OpenKey('.' + prefix, True);try//create a new value for this key --> pcifilereg.Writestring('', prefix + 'file');finallyreg.CloseKey;end;//c...
  正文:请看下面程序
    
uses

registry, shlobj;

procedure TForm1.RegisterFileType(prefix: string; exepfad: string);

var

reg: TRegistry;

begin

reg := TRegistry.Create;

try

reg.RootKey := HKEY_CLASSES_ROOT;

//create a new key --> .pci

reg.OpenKey('.' + prefix, True);

try

//create a new value for this key --> pcifile

reg.Writestring('', prefix + 'file');

finally

reg.CloseKey;

end;

//create a new key --> pcifile

reg.CreateKey(prefix + 'file');

//create a new key pcifile

reg.OpenKey(prefix + 'file', True);

//and create a value where the icon is stored --> c:.exe,0

try

reg.Writestring('', exepfad + ',0');

finally

reg.CloseKey;

end;

reg.OpenKey(prefix + 'file', True);

//create value where exefile is stored --> c:.exe "%1"

try

reg.Writestring('', exepfad + ' "%1"');

finally

reg.CloseKey;

end;

finally

reg.Free;

end;

SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

RegisterFileType('pci', 'c:.exe');

end;

*****************************************

注意,在下面这些操作之后,应该发送一个刷新的消息给系统

SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);

通过对注册表进行修改,可以删除一种文件名后缀与某个应用程序相关联

程序例如下:

procedure deregisterFileType(ft: String);

//ft:将要删除文件关联的后缀,如.tst

var

myreg:TRegistry;

key: String;

begin

myreg:=TRegistry.Create;

myReg.RootKey:=HKEY_CLASSES_ROOT;

myReg.OpenKey(ft, False);

key:=MyReg.ReadString('');

MyReg.CloseKey;

myReg.DeleteKey(ft);

myReg.DeleteKey(key);

myReg.Free;

end;

调用例子:

Example:

deregisterFileType('.tst');

通过对注册表进行修改,可以删除资源管理器上下文件菜单中的新建子菜单中的命令

程序例如下:

procedure FileTDelNew(ft: String);

//fp:文件后缀键值,如.tst

var

myReg:TRegistry;

begin

myReg:=TRegistry.Create;

myReg.RootKey:=HKEY_CLASSES_ROOT;

if not myReg.KeyExists(ft) then

begin

MyReg.Free;

Exit;

end;

MyReg.OpenKey(ft, true);

if MyReg.KeyExists('ShellNew') then

MyReg.DeleteKey('ShellNew');

MyReg.CloseKey;

MyReg.Free;

end;

调用例子:

Example:

FileTDelNew('.tst');

原理说明:

将后缀键的下面的子键ShellNew删除即可。

通过对注册表进行修改,可以删除资源管理器上下文件菜单中对某类文件的处理命令

程序例如下:

procedure FileTDelAction(key, name: String);

//key:关联键值为后缀的描述键值,如.tst对应testfile,则key:=testfile

//name:命令名称

var

myReg: TRegistry;

begin

myReg:=TRegistry.Create;

myReg.RootKey:=HKEY_CLASSES_ROOT;

//如果给出的是一个文件后缀,则转换成对应的描述键值

//在生成文件关联时,如果未给出描述键值,则会自动生成,此处与上面是联系的

{ if key[1] = '.' then

key:= copy(key,2,maxint)+'_auto_file';}

if key[1] = '.' then

begin

if myReg.KeyExists(key) then //首先看注册表中是否有此键,有则取出

begin

myReg.OpenKey(key, false); "通过注册表设置文件关联"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Language/Delphi/12990.html


关键字:

关于《通过注册表设置文件关联》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td