我如何锁定文件,使其只能使用我的应用程序打开?

How can i lock a file, by making that it can only open using my application?

我想锁定一个文件(例如使用图像)。所以我有这张图片 "myImage.jpg",我希望它只能通过我的应用程序访问,例如我自己的图像可视化工具。问题是我不知道该怎么做。有人建议我更改其扩展名( myImage.jpg 为 myImage.whatever )。但是有人可以将它改回 jpg,或者单击 "open with" 按钮和 select 任何图像可视化工具,它就会起作用。那么这是一种只能通过我的应用程序访问的方法吗?有没有办法制作这样一个可以锁定图像的应用程序?是否可以手动完成?我只知道 Visual Studio 中的 C#(我还不是专家)所以...

不,无法按照您询问的方式锁定文件。所有文件都由字节结构组成,"lock out" 其他应用程序无法读取或写入文件。

您可以控制其他人是否可以 read/write 在您使用该文件时

但是一旦您的应用程序关闭,该文件就在那里,并且可以通过您将要执行的相同读取逻辑传递,但由不同的程序传递。您可以翻转文件的所有字节,但愿 "they" 别想出来。如果你真的想走得更远,你可以在 运行 时间内对其进行加密和解密。

但是,当您自己不使用该文件时,您无法阻止他人删除、重命名或移动您的文件。

如果需要,您可以打开文件句柄 - FileStream's 构造函数采用指定文件共享模式的重载,其中一种模式是 'no sharing'.

FileStream stream = new FileStream( 
    sourcePath, 
    FileMode.Open, 
    FileAccess.ReadWrite, 
    FileShare.None
);

只要您保持该流处于打开状态,其他任何内容都无法访问、读取或写入该文件。

您可以将文件保存为只有您的程序可以理解的格式,例如通过添加一些字节数作为前缀。

我想说一个在我脑海中闪过的方法。

zip the image/ file using encrypted password. unzip with password and and use that image/file.

谢谢,