Inno setup 获取每个用户的应用程序数据文件夹

Inno setup 获取每个用户的应用程序数据文件夹,inno-setup,uninstallation,appdata,Inno Setup,Uninstallation,Appdata,在我的应用程序中,每个用户都有自己的设置,我将这些设置保存到该用户的应用程序数据目录中的子目录中。在卸载过程中,我想删除计算机上每个用户的这些设置。我如何在Inno设置中做到这一点 换句话说,我需要获取一个列表,其中包含每个用户的应用程序数据目录(而不是共享的应用程序数据目录),以便从中删除MyAwesomeApp目录。有办法吗?你不能。 同样的设计也会阻止您访问配置文件文件夹 除此之外,最好的做法是保留用户的数据,以防他们想重新安装、漫游配置文件等。假设卸载程序以管理员权限运行,您只需获取用户

在我的应用程序中,每个用户都有自己的设置,我将这些设置保存到该用户的应用程序数据目录中的子目录中。在卸载过程中,我想删除计算机上每个用户的这些设置。我如何在Inno设置中做到这一点

换句话说,我需要获取一个列表,其中包含每个用户的应用程序数据目录(而不是共享的应用程序数据目录),以便从中删除
MyAwesomeApp
目录。有办法吗?

你不能。 同样的设计也会阻止您访问配置文件文件夹


除此之外,最好的做法是保留用户的数据,以防他们想重新安装、漫游配置文件等。

假设卸载程序以管理员权限运行,您只需获取用户目录,然后枚举其中的所有用户目录

您可以从Inno安装程序运行以任何语言编写的可执行文件。在其中,您可以首先使用函数获取当前用户的应用程序数据目录。对于Win7,它看起来像这样:

c:\Users\MyUser\AppData\Roaming\
您可以使用获取用户名(在本例中为MyUser),并查找父目录并将字符串拆分到父目录“C:\Users\”和“AppData\Roaming\”。然后,您可以使用FindFirstFile/FindNextFile枚举所有用户目录,只需将第二部分“AppData\Roaming\”附加到它们,并检查该文件是否存在。通过拆分从SHGetSpecialFolderPath获得的目录,您可以确保它在XP(返回类似C:\Documents and Settings\MyUser\Application Data的内容)和Win7中都能工作。基本上,您只需用SHGetSpecialFolderPath返回的字符串中的所有用户名替换MyUser即可


我不知道这是否避免了操作系统的安全性,也不知道它是否适用于漫游用户。

管理员用户可能不一定有权访问用户文件夹(是的,他们可以强制对文件夹拥有权限并接管该文件夹)而且这不会影响漫游配置文件。请注意,如果运行卸载的用户使用的是漫游配置文件,则您也会对其他每台计算机的设置进行删除。此外,本地用户文件夹可能已加密,因此无法访问这些文件夹。我记得Windows徽标验证程序不允许在上创建单个文件卸载后保留安装--是否已更改?