[英]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 。 该键的默认值(如果存在)应为空字符串。 我基于我在自己系统上的注册表中看到的内容。
查看注册表,看起来应该将您的行更改为。
从
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.