我們有一個Windows應用程序,其中有一個組件可寫入ProgramData文件夾。當運行卸載程序時,不會刪除由該組件生成的文件。使用UAC :: RunElevated,我們首先安裝一個第三方組件到ProgramDataNSIS RMDir無法刪除用戶在ProgramData中創建的文件
SetOutPath "$RENDERER_INSTALL_DIR"
LogSet On
File /r "${MAGNIFY_DIR}/secRenderer/Arelle/*"
LogSet Off
AccessControl::GrantOnFile "$RENDERER_INSTALL_DIR" "(S-1-5-32-545)" "FullAccess"
在操作過程中,該組件寫入自己的安裝目錄中ProgramData
在卸載過程中,我們試圖刪除上面創建的文件夾,再次使用UAC :: RunElevated
RMDir /r $RENDERER_INSTALL_DIR
但是,通過操作組件創建的文件不會被刪除。
我們觀察到,這些文件由使用該組件的用戶擁有,而不是管理員,但該用戶仍具有完全的讀取,寫入和刪除權限。
我們如何完成這項工作?
我會建議你不要使用UAC插件。 – Anders