繁体   English   中英

Windows注册表文件关联菜单

[英]Windows Registry file association menu

我最近(今天)开始在Delphi中使用我的注册表进行meddeling。 :)所有工作正常,我的自定义文件类型现在打开我的程序,但有2个问题,我无法解决。

1)我想要从所有文件类型“打开”的选项,所以我添加

  reg := TRegistry.Create;
  reg.RootKey := HKEY_CLASSES_ROOT;
  reg.LazyWrite := false;
  reg.OpenKey('*\OpenWithList\EncryptionSystem', true);
  reg.WriteString('','C:\Program Files\EncryptionSystem\EncryptionSystem.exe "%1"');
  reg.CloseKey;
  reg.free;

如果我使用regedit查看注册表,它肯定会出现,但是当我右键单击一个文件并选择打开它时它不存在...

所以我加了这个

  reg.OpenKey('*\shell\Encrypt\command', true);
  reg.WriteString('','C:\Program Files\EncryptionSystem\EncryptionSystem.exe "%1"');
  reg.CloseKey;

这适用于每个文件,但选项位于顶部,带有“打开”和“编辑”。 我有点希望它像大多数程序一样出现在菜单子部分中...我意识到我需要使用shellext但我不理解这些如何与上下文菜单处理程序一起工作的结构...我已经学会了所有无论如何我从阅读注册表...我知道shellext的名称出现在“。*”后面,但至于大胡言乱语的含义我不知道。

看起来单独的注册表项不会填充“打开方式”菜单。 它由以下位置的Explorer存储的特定于扩展名的列表所胜过:

HKCU \\软件\\微软\\的Windows \\ CurrentVersion \\ Explorer中\\ FileExts

我冒昧地猜测,您添加应用程序的列表仅在资源管理器没有更好的使用时使用 - 因此仅适用于尚未定义自己的“打开方式”列表的文件。

此外,它看起来像“打开方式”注册表项应该与您正在使用的形式不同。 密钥应该是EXE文件的名称,例如ExcryptionSystem.exe 该键的默认值(如果存在)应为空字符串。 我基于我在自己系统上的注册表中看到的内容。

您应该查看文件类型 MSDN文章,它是文件关联简介的一部分。

查看注册表,看起来应该将您的行更改为。

reg.OpenKey('*\OpenWithList\EncryptionSystem', true);
reg.WriteString('','C:\Program Files\EncryptionSystem\EncryptionSystem.exe "%1"')

reg.OpenKey('*\OpenWithList\EncryptionSystem.exe', true); //note exe
reg.WriteString('','C:\Program Files\EncryptionSystem\EncryptionSystem.exe "%1"')

先检查一下。

在我的W7P上,他们没有被引用。 相反,他们在......

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM