第一次寫部落格,美好的開始!
昨晚實現程式解除安裝邏輯時遇到乙個問題,發現總刪不掉安裝根目錄,而根目錄下的檔案可以刪掉,比較奇怪。在網上蕩了半天,也沒有盪到有用的資訊,後來打算還是自己研究一下,現在把思路和結果分享給大家!
刪除檔案,我使用了windows api 之 deletefile。
刪除資料夾,我使用了windows api之 removedirectory。
當刪除失敗時,首先檢視失敗原因,使用getlasterror可以獲得刪除失敗的錯誤碼。
如果被占用,返回的錯誤碼應該是32。這時應該看看是不是之前有openfile之類的操作,而沒有closehandle,如果有的話,會造成占用。
在檢查了這些之後,再看看要刪除的部分是不是包括工作目錄之下。
設定工作目錄有多種情況,nsis 指令碼裡設定輸出目錄:setoutpath;
shellexecuteex裡的lpdirectory也可以設定工作目錄,以及其他一些情況。只要工作目錄不包含要刪除的部分,應該就ok了。
windows下解決目錄被占用無法刪除的問題
windows下目錄被占用是無法刪除的,通會報下面的錯誤 解決辦法是如果開啟了要刪除的目錄就關閉掉,如果有應用程式占用則要關掉占用的程序,顯式退出是一種優雅的辦法,但有時沒有辦法x掉應用 譬如程序在後台一直占有檔案 的時候,就需要借助windows資源管理器來結束程序了。首先需要找到占用目錄的程序 ...
Docker映象目錄無法刪除
docker pull下來的映象目錄預設放在 c programdata docker windowsfilter。由於拉下來的映象已經幾乎佔滿了c盤的空間,準備刪除所有的映象,卻發現刪除不掉。搜尋之後的解決辦法 使用jhowardmsft 編寫的docker ci zap.exe來刪除可以刪除成功...
Windows下無法刪除檔案
一 常規解決辦法 1,註消或重啟電腦,然後再試著刪除。2,進入 安全模式刪除 3,在純dos命令列下使用del,deltree和rd命令將其刪除。4,如果是資料夾中有比較多的子目錄或檔案而導致無法刪除,可先刪除該資料夾中的子目錄和檔案,再刪除資料夾。5,在任務管理器中結束explorer.exe程序...