我们有一个带有写入 ProgramData 文件夹的组件的 Windows 应用程序。运行卸载程序时,不会删除该组件生成的文件。使用 UAC::RunElevated,我们首先将第三方组件安装到 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
但是,通过操作组件创建的文件不会被删除。
我们观察到这些文件归使用该组件的用户所有,而不是管理员拥有,尽管管理员拥有完整的读取、写入和删除权限。
我们如何进行这项工作?