0

我的问题是我想在我的 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);
}
4

1 回答 1

4

那么有没有办法保护EXE文件不被复制?

不,绝对没有办法做到这一点。您可以通过以一种或另一种方式加密文件的内容来使其更难,但是具有调试器的足够坚定的用户总是能够破坏您的保护。

另请注意,从大多数(如果不是全部)主动防病毒保护机制的角度来看,写出 EXE 然后执行它的做法将是高度可疑的。您最好重新考虑提供当前通过编写和执行 EXE 文件提供的功能的方式。

于 2013-10-11T13:32:09.193 回答