在不让用户访问文件的情况下提取文件

时间:2013-08-01 15:05:42

标签: c#

我总是对那些你可以通过执行一个安装程序文件来安装的程序印象深刻,然后它会提取所有其他所需的文件来运行实际的程序。 即使现在我仍然想知道如何编写一个程序来提取文件仍然在程序中(所以不在某种类型的zip中),我已经看到大量安装程序用于拥有此功能的游戏。我需要这个原因我想在正确的时刻提取一个文件,而不是让使用该程序的人能够在提取之前删除该文件,这可能看起来很模糊,但我希望我已经足够通知你了。

4 个答案:

答案 0 :(得分:3)

我只想说构建安装程序很难

我建议使用NSIS:http://nsis.sourceforge.net/Main_Page

至于创建用户无法访问的文件,创建具有正确读/写权限的临时文件,将数据提取到临时文件,然后将文件复制到需要的位置。

在没有用户干扰的情况下进行提取,并且操作系统会处理复制保护。

答案 1 :(得分:2)

如何将要隐藏的文件的构建操作更改为嵌入式资源,或者编译dll / exe中的文件?

答案 2 :(得分:0)

可执行程序只是文件,因此您可以在您的可执行文件中附加任何数据。 (适用于我的c ++编译程序)

$ cat executables some_blob_data > new_executables

由于main()的argv [0]是您文件的名称,您可以使用它来访问此文件本身的数据(适用于c或c ++,其他语言适用于其他语言)

答案 3 :(得分:0)

执行此操作的一种非常简单的方法是使用您的存档工具或许多已安装的安装程序之一。 WinRar,WinZip和其他大多数人允许创建自解压exe文件。我知道你说的不是你想要的,但如果你确保自动执行你的安装程序应用程序并删除所有的临时文件,那么它真的可以非常简单和专业的外观。显然,各种安装程序应用程序都能够满足您的需求。

如果您真的想自己这样做,那么简单的解决方案很可能取决于您的IDE软件和语言。通用答案是您需要一个可以接受流作为输入的压缩库。然后,您需要将实际文件转换为安装程序应用程序内的资源。此时,只需告诉压缩库从指向资源的流中读取即可。如何做到这一点因语言而异。