【发布时间】:2011-11-04 04:59:50
【问题描述】:
我为应用程序 (Myapp.exe) 添加了更新程序。当我启动 Myapp.exe 时,它会检查新的可用版本并根据用户说明将其下载到 Windows Temp 目录。将更新下载到 Temp 目录后,新程序 replacer.exe 运行,该程序负责获取 Myapp.exe,杀死其进程,删除 Myapp.exe 并将新版本(Myapp.exe)从 Temp 目录复制到 Myapp.exe 旧路径。 replacer.exe 有以下代码。
class Program
{
static void Main(string[] args)
{
try
{
Process myProcess = Process.GetProcessesByName("Myapp")[0];
myProcess.Kill();
File.Delete(args[0]);
File.Copy(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\Temp\\Myapp.exe", args[0], false);
}
catch (Exception e)
{
Console.Write(e.ToString() + "");
//return;
}
//Console.Write( "Success");
try
{
Process.Start(args[0]);
}
catch (Exception es)
{
Console.Write(es.ToString() + "");
//return;
}
Console.ReadLine();
}
}
但是replacer.exe 无法删除Myapp.exe 并给出异常System.UnauthorizedAccessException。这意味着 replacer.exe 在删除 Myapp.exe 时无法访问 Myapp.exe 给出的路径 注意:我已经以管理员和普通用户的身份运行了 UserAccount、Myapp.exe 和 replacer.exe。 我该如何解决。请帮我。 提前致谢。 . .
【问题讨论】:
-
args[0]内容没有问题,Myapp.exe不是只读的。