2013-10-11 55 views
0

我的问题是,我想包括EXE文件与我的C#项目作为资源,我发现下面的方法在互联网上,它运作完美,除了我运行后,EXE文件被提取到硬盘驱动器,我想保持它对运行我的C#软件的人隐藏,我使用File.Delete()在文件关闭时获取该文件,但是可以在从C#项目启动后将其复制到硬盘上的其他位置,那么无论如何保护EXE文件不被复制?像锁定它,或至少隐藏它?另外,如果它可能读取文件而不需要提取它,这将是伟大的,我将不胜感激,如果你们是特定的,因为我是C#编程的新手,谢谢。如何保护我的EXE资源?

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); 
} 
+3

这只是似乎鱼腥我。 –

+0

是.Net exe文件吗? –

+0

我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

回答

4

所以反正是有保障的EXE文件从得到复制?

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

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