function TCopyHookFactory.GetProgID: string; begin Result := ''; end;
procedure TCopyHookFactory.UpdateRegistry(Register: Boolean); var ClsID: string; begin ClsID := GUIDToString(ClassID); inherited UpdateRegistry(Register); ApproveShellExtension(Register, ClsID); if Register then file://将/clsid 加入到注册表的CopyHookHandlers中 CreateRegKey('directory\shellex\CopyHookHandlers\' + ClassName, '', ClsID) else DeleteRegKey('directory\shellex\CopyHookHandlers\' + ClassName); end;
procedure TCopyHookFactory.ApproveShellExtension(Register: Boolean; const ClsID: string); const SApproveKey = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved'; begin with TRegistry.Create do try RootKey := HKEY_LOCAL_MACHINE; if not OpenKey(SApproveKey, True) then Exit; if Register then WriteString(ClsID, Description) else DeleteValue(ClsID); finally Free; end; end;