我將構建一個可以完全卸載其他應用程式的應用程式。類似于Parallels Toolbox中的卸載應用程式。現在的問題是如何跟蹤和定位特定應用程式在我的系統上生成/存盤的每個檔案/檔案夾?
該應用程式可以使用 Shell、Swift、C/C 進行編碼
uj5u.com熱心網友回復:
這是一個難題,尤其是在 MacOS 等現代系統上。可以使用DTrace之類的工具運行第三方安裝程式,以查找創建或寫入檔案的內核級呼叫。這將使您對安裝程式正在做什么有所了解。
復雜性來自違反您的一個隱含假設,即創建/修改檔案是安裝程式所從事的唯一活動,這可能不是真的。例如,在 Windows 中,安裝程式可以修改注冊表,這需要不同的檢測和回滾機制。(我知道您專門針對 MacOS,但可以將其視為類比。)許多安裝程式將訪問作業系統級別的服務,這些服務是維護自己狀態的獨立行程,對于天真的旁觀者來說,這些服務可能是增量的和“不透明的”(例如,對 SQLite 資料庫檔案的修改)。
一種方法可能是創建具有快照功能的沙箱和目標作業系統的精簡版本(即,運行盡可能少的服務)。理論上,可以在運行第三方安裝程式之前和之后拍攝快照,然后查看兩者之間的變化。從那里,人們可以撰寫一個程式,盡可能多地回滾這些更改,但這仍然可能需要人工判斷來讀取快照的茶葉(即,忽略對/var/log/...檔案等內容的更改)并將其轉化為可以重復且可靠地運行以有效逆轉安裝的東西。
話雖如此,這仍然是一個值得研究和思考的有趣問題。這也是學習很多關于作業系統的好方法,您可能會發現一些技巧或方法,這些技巧或方法大大挑戰了我在這里提出的假設。例如,經過幾次觀察,您可能能夠為檢測和回滾生成一組非常好的啟發式方法,這些啟發式方法適用于當今使用的許多常見安裝程式。我鼓勵你繼續學習和思考這個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/517833.html
標籤:苹果系统贮存卸载
上一篇:SwiftUI縮放后臺攔截點擊
