在不允许用户访问的情况下提取文件
本文关键字:情况下 提取 文件 访问 不允许 用户 | 更新日期: 2023-09-27 18:25:54
那些程序给我留下了深刻的印象,你可以通过执行一个安装程序文件来安装这些程序,然后提取所有其他所需的文件来运行实际的程序。即使是现在,我仍然想知道如何编写一个程序来提取程序中的文件(所以不是在某种zip中),我已经看到很多游戏安装程序都有这种功能。我需要这个,因为我想在适当的时候提取一个文件,而不让使用程序的人在提取文件之前删除文件,这可能看起来很模糊,但我希望我已经告诉你足够多了。
我只想说构建安装程序是很困难的。
我建议使用NSIS:http://nsis.sourceforge.net/Main_Page
至于创建用户无法访问的文件,请创建一个具有正确读/写权限的临时文件,将数据提取到临时文件中,然后将文件复制到需要的位置。
提取操作不受用户干扰,拷贝保护由操作系统处理。
将要隐藏的文件的构建操作更改为Embedded Resource,或类似于在dll/exe中编译文件的操作,怎么样?
可执行程序只是一个文件,所以您可以在可执行文件中附加任何数据。(适用于我的c++编译程序)
$ cat executables some_blob_data > new_executables
由于main()的argv[0]是您的文件名,您可以使用它来访问该文件本身中的数据(适用于c或c++,likley适用于其他语言)
实现这一点的一个非常简单的方法是使用您的归档工具或数十个已经制作好的安装程序之一。WinRar、WinZip和大多数其他软件都允许创建自解压的exe文件。我知道你说过这不是你想要的,但如果你确保它自动执行你的安装程序,并在完成后删除所有临时文件,那真的是非常愚蠢和专业的。显然,各种安装程序应用程序都可以执行您想要的操作。
如果你真的想自己做这件事,那么简单的解决方案很可能取决于你的IDE软件和语言。一般的答案是,您需要一个可以接受流作为输入的压缩库。然后,你会想把你的实际文件制作成安装程序应用程序中的资源。在这一点上,只需要告诉压缩库从指向资源的流中读取即可。如何做到这一点因语言而异。