簡體   English   中英

覆蓋受限的應用程序文件?

[英]Overwrite restricted application file?

我正在嘗試手動修補我的應用程序。 該應用程序利用服務,在嘗試覆蓋該應用程序dll之前,我確保已停止並卸載該服務。

問題是我無法覆蓋甚至刪除某些dll文件,而這些dll文件是應用程序的核心,這些dll文件由我首先卸載的服務使用。

我使用以下方法傳遞新的文件路徑,以替換位於C:\\Program Files\\AppName\\應用程序根目錄內的舊DLL C:\\Program Files\\AppName\\

公共靜態布爾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; } 

我只希望提供一個新文件並刪除舊文件,替換它,然后覆蓋它。

注意:我運行的用於修補的應用程序以管理員身份運行。

任何想法?

我能夠通過使用“中間人”來解決此問題,換句話說,是另一個應用程序,該應用程序下載另一個可執行文件並將命令行參數傳遞給它。

最初,我的服務將下載一個可執行文件(稱為Installer.exe )。 然后, Installer.exe將嘗試停止該服務並修補內容,但這不起作用。

我現在正在運行該服務,它將下載“ Installer.exe ”。

Installer.exe將加載並下載PatchPayload.exe

PatchPayload.exe將運行並PatchPayload.exe該服務,將其卸載,然后從集中式服務器下載所有必需的修補程序內容,並分別對服務核心文件進行修補,然后安裝該服務並再次運行它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM