C# 在不允许用户访问的情况下提取文件

C# 在不允许用户访问的情况下提取文件,c#,C#,我对那些可以通过执行一个安装程序文件来安装的程序印象深刻,该文件将提取所有其他需要的文件来运行实际的程序。 即使是现在,我仍然想知道如何编写一个程序来提取仍然存在于程序中的文件(因此不是在某种zip中),我已经看到很多游戏安装程序都有这个功能。我需要这一点,因为我想在适当的时候提取文件,而不给使用程序的人在提取文件之前删除文件的能力,这可能看起来很模糊,但我希望我已经通知了您足够多。如何将要隐藏的文件的生成操作更改为嵌入资源,或者类似于在dll/exe中编译文件的东西?我只想说,构建安装程序很困

我对那些可以通过执行一个安装程序文件来安装的程序印象深刻,该文件将提取所有其他需要的文件来运行实际的程序。
即使是现在,我仍然想知道如何编写一个程序来提取仍然存在于程序中的文件(因此不是在某种zip中),我已经看到很多游戏安装程序都有这个功能。我需要这一点,因为我想在适当的时候提取文件,而不给使用程序的人在提取文件之前删除文件的能力,这可能看起来很模糊,但我希望我已经通知了您足够多。

如何将要隐藏的文件的生成操作更改为嵌入资源,或者类似于在dll/exe中编译文件的东西?

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

我建议使用NSIS:

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


提取在用户不干预的情况下进行,复制保护由操作系统处理。

可执行程序只是一个文件,所以您可以在可执行文件中附加任何数据。(为C++编译程序工作)< /P>

因为主文件的(0)的文件名是你的文件,你可以用它来访问这个文件本身的数据(对于C或C++和其他语言的利克利)

< p>一个非常简单的方法就是使用你的存档工具或者几十个已经完成的安装程序之一。WinRar、WinZip和大多数其他软件都允许创建自解压exe文件。我知道你说过这不是你想要的,但如果你确保在安装程序应用程序时自动执行并删除所有的临时文件,那么这真的是非常简单和专业的。显然,各种安装程序应用程序都能满足您的需要


如果您真的想自己做这件事,那么简单的解决方案很可能取决于您的IDE软件和语言。一般的答案是,您需要一个可以接受流作为输入的压缩库。然后,您将希望将实际文件转换为安装程序应用程序中的资源。此时,只需告诉压缩库从指向资源的流中读取。不同语言的执行方式差异很大。

您指的是InstallShield等部署工具吗?通常,如果用户没有文件的读取权限,则该用户运行的应用程序将没有文件的读取权限。你的问题不清楚。安装程序的工作原理有很好的文档记录。@JameyDiepbrink谢谢,请继续并接受答案,以便本页面的未来访问者知道什么对您有用(我得到了分数:)
$ cat executables some_blob_data > new_executables