【问题标题】:How can i lock a file, by making that it can only open using my application?如何锁定文件,使其只能使用我的应用程序打开?
【发布时间】:2015-10-20 16:34:22
【问题描述】:

我想锁定一个文件(例如,让我们使用图像)。所以我有这个图像“myImage.jpg”,我希望它只能通过使用我的应用程序来访问,比如我自己的图像可视化器。问题是我不知道该怎么做。有人建议我更改它的扩展名( myImage.jpg 到 myImage.whatever )。但是有人可以将其更改回 jpg,或单击“打开方式”按钮并选择任何图像可视化工具,它就可以工作。那么这是一种只能通过我的应用程序访问的方法吗?有没有办法制作这样一个可以以这种方式锁定图像的应用程序?是否可以手动完成?我只知道 Visual Studio 中的 C#(我还不是专家)所以...

【问题讨论】:

  • 您可以开始考虑加密您的图像文件。然后没有其他标准程序可以显示该图像。当然你自己的程序需要在显示之前解密文件
  • 但这不会阻止其他应用程序修改文件。即使没有意义,我仍然可以编写一个将数据写入文件的应用程序。
  • 嗯,没错,但似乎主要问题是阻止显示文件。
  • @roryap 但是你能够告诉如果其他人修改了文件。
  • 此外,当您的软件未运行时,您永远不应阻止用户修改他们自己系统上的文件。否则,他们在使用完您的应用程序后如何清理文件?其他任何行为都与类似恶意软件的行为有关。

标签: c# windows file locking


【解决方案1】:

您可以控制其他人是否可以在您使用文件时读取/写入文件

但是一旦您的应用程序关闭,文件就在那里,并且可以通过您将执行的相同读取逻辑传递,但由不同的程序传递。您可以翻转文件的所有字节,并希望“他们”不会弄明白。如果您真的想走得更远,您可以在运行时对其进行加密和解密。

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

【讨论】:

    【解决方案2】:

    不,没有办法以您询问的方式锁定文件。所有文件都由字节结构组成,无法“锁定”其他应用程序读取或写入文件。

    【讨论】:

      【解决方案3】:

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

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

      只要您保持该流打开,其他任何东西都无法访问该文件,无论是读取还是写入。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          我想说一个我想到的方法。

          使用加密密码压缩图像/文件。 使用密码解压缩并使用该图像/文件。

          谢谢,

          【讨论】:

            猜你喜欢
            • 2016-04-19
            • 1970-01-01
            • 2020-04-24
            • 1970-01-01
            • 1970-01-01
            • 2011-06-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多