我一直在寻找一种简单的自我更新可执行文件的机制。(由于应用程序的性质,我不能使用Click一次-请相信我)
我注意到飞行中的程序集可以移动到磁盘上的另一个位置,大概是因为执行的程序集实际上是内存中的副本),并且文件的原始位置可以被覆盖。通过以下概念验证片段证明了这一点…
string assemblyStart = System.Reflection.Assembly.GetExecutingAssembly().Location;
Console.WriteLine(assemblyStart);
if(File.Exists(@"C:\ANewExe.exe"))
{
File.Delete(@"C:\ANewExe.exe");
}
File.Move(assemblyStart,@"C:\ANewExe.exe");
string assemblyMoved = System.Reflection.Assembly.GetExecutingAssembly().Location;
Console.WriteLine(assemblyMoved);
File.WriteAllText(assemblyStart,"some text");
在我的XP开发系统上,这会导致程序集文件被移动到
c:\ANewExe.exe
,原始文件位置将用文本“some text”填充。
我想我的问题是,这是一种安全和/或可靠的方法,可以跨版本的Windows从XP向上使用),还是有其他方法来实现这一功能?我没有权限测试的AV系统是否会检测到病毒行为?
短暂性脑缺血发作