在安装过程中查看所有用户配置文件

时间:2012-09-02 17:37:21

标签: windows registry windows-installer

我正在创建一个需要在Send-To资源管理器上下文菜单中添加条目的Windows应用程序,并且需要为所有用户执行此操作。由于Send-To文件夹特定于每个用户,没有所有用户的公共文件夹,因此我有两个选择:

我可以浏览所有用户配置文件以及默认用户配置文件,找到SendTo文件夹并添加快捷方式。这将确保在卸载期间删除快捷方式。

或者,每次用户登录时,我都可以确保快捷方式位于SendTo文件夹中(通过将我的应用程序添加到所有用户的启动文件夹中)。这将使我的生活在安装过程中变得更加容易,但是当卸载应用程序时,所有这些快捷方式都不会被删除。

无论哪种方式,我都需要一种方法来查找所有用户的SendTo文件夹。我可以扫描HKEY_USERS并找到每个用户的SendTo文件夹(它可能不在默认位置,用户可以移动它),但是如何查找用户配置文件的根文件夹?注册表具有类似于%USERPROFILE \ AppData \ Roaming ...的SendTo文件夹。如何确定%USERPROFILE%对于另一个用户是什么?

感谢。

2 个答案:

答案 0 :(得分:0)

您可以在MSI中创建自定义操作,该操作将遍历所有用户配置文件并从SendTo文件夹中删除快捷方式。您可以找到所有用户配置文件,只扫描Windows7(Vista)中%systemdrive%\ Users文件夹中的所有文件夹,或Windows XP中的文档和设置。

或者你可以使用ActiveSetup机制来创建一个脚本(应用程序),当用户下次登录系统时,它会从SendTo文件夹中删除你的快捷方式。

答案 1 :(得分:0)

更容易接近:使用exe本身的启动序列来检查它在启动时是否存在快捷方式,如果没有则创建它。

最好使用ActiveSetup处理所有用户的卸载,ActiveSetup会为登录到计算机的每个用户运行一次“可运行”。在您的情况下,一个简单的批处理命令可以完成这项工作。

如果您确实选择了此卸载方法,则必须确保msi安装程序检查此卸载密钥并在安装时将其删除 - 否则您将在下次用户登录时为该快捷方式安排删除操作。

另请注意,每次安装都应在ActiveSetup中使用不同的条目,以确保为已经卸载快捷方式的用户重新创建快捷方式。在阅读有关ActiveSetup的更多信息之前,最后一部分可能有点难以理解:http://www.etlengineering.com/installer/activesetup.txt