这只是在windows环境下。 据我所知,windows os通过文件扩展名识别特定文件的关联应用程序。 同样明智的每个文件(二进制)以相应的符号(“起始符号”)开头。举个例子,.JPG以ÿØÿà开头。假设我在十六进制编辑器或文本编辑器中打开此.JPG文件,然后将该起始符号更改为另一种文件类型。例如,我可以将ÿØÿà改为.Eߣ(。mkv)。因此,当我双击.JPG时,Windows Photo Viewer会显示一些错误或类似消息。因此,我需要获取有关尝试打开该类文件的应用程序的一些信息。如果可以,我需要使用与“起始符号”相关联的应用程序打开该文件。
简单地说,当我打开.JPG时,我需要打开一个默认的视频播放器.mkv文件。但它可能不适用于这个例子。因为我只改变了我的.JPG的“起始符号”。
请给我任何想法。
谢谢!
答案 0 :(得分:2)
加密文件时,请为其添加新的扩展名。例如Picture.jpg
变为Picture.encrypted-jpg
。然后注册为encrypted-jpg
的处理程序,解密文件,然后启动正常的jpg
处理程序。
答案 1 :(得分:1)
当要求shell对文件执行动词时,shell不会使用该文件的内容来确定将其传递给哪个应用程序。文件扩展名决定了文件的处理方式。
您希望使用该文件的内容来影响哪个应用处理shell动词。为此,您需要创建一个启动器应用程序来读取文件头,然后决定将文件传递到哪个应用程序。您可以将启动器应用程序指定为您感兴趣的所有文件扩展名的处理程序应用程序。
虽然你可以这样做,但只是适当地设置文件扩展名会容易得多。
答案 2 :(得分:0)
执行此类操作的正确方法是使用reparse points替换文件。
缺点是这涉及编写file system filter driver,即操作系统扩展,这是普通应用程序编程之外的整体麻烦。 (由于Windows已经进行了文件加密,我怀疑它是值得的。)