我正在尝试手动修补我的应用程序。该应用程序使用了一项服务,我确保在尝试覆盖应用程序 dll 之前停止并卸载该服务。
问题是我无法覆盖甚至删除一些作为应用程序核心的dll文件,这些dll文件由我首先卸载的服务使用。
我使用以下方法传入新的文件路径,以替换位于应用程序根目录内的旧 DLLC:\Program Files\AppName\
公共静态 bool CopyFile(string newFile, string oldFile) {
var newfile = new FileInfo(newFile); var oldfile = new FileInfo(oldFile); var f2 = new FileIOPermission(FileIOPermissionAccess.AllAccess, oldFile); f2.AddPathList(FileIOPermissionAccess.Write | FileIOPermissionAccess.Read, newFile); try { f2.Demand(); } catch (SecurityException s) { Console.WriteLine(s.Message); } for (int x = 0; x < 100; x++) { try { File.Delete(oldfile.FullName); newfile.CopyTo(oldfile.FullName, true); return true; } catch { Thread.Sleep(200); } } return false; }
我只想提供一个新文件并删除旧文件,替换它,覆盖它.... 应用程序
注意:我运行以进行修补的应用程序以管理员身份运行。
任何想法?