我的问题是,我想把我的C#项目作为资源包含EXE文件,我在互联网上找到了下面的方法,除了在我运行它之后,EXE文件被提取到硬盘驱动器上,它完全正常工作想让它隐藏在运行我的C#软件的人身上,我使用File.Delete()来关闭文件,但是从C#项目启动后它可以复制到硬盘上的其他地方,那么有没有保护EXE文件不被复制?喜欢锁定它还是至少隐藏它?此外,如果它可以读取文件而不需要提取它会很好,我会很感激,如果你们是具体的,因为我是C#编程的新手,谢谢。
byte[] exeBytes = Properties.Resources.MyTestExe;
string exeToRun = @"Resources.MyTestExe.exe";
using (FileStream exeFile = new FileStream(exeToRun, FileMode.CreateNew))
{
exeFile.Write(exeBytes, 0, exeBytes.Length);
}
using (Process exeProcess = Process.Start(exeToRun))
{
exeProcess.WaitForExit();
File.Delete(exeToRun);
}
答案 0 :(得分:4)
那么无论如何都要保护EXE文件不被复制?
不,绝对,积极,没有办法做到这一点。您可以通过以某种方式加密文件内容来加强,但使用调试器的充分确定的用户将始终能够破坏您的保护。
另请注意,从大多数(如果不是全部)主动反病毒保护机制的角度来看,写出EXE然后执行它的做法将是非常可疑的。您最好重新考虑提供当前通过编写和执行EXE文件提供的功能的方式。