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

Windows 在安装过程中检查所有用户配置文件,windows,registry,windows-installer,Windows,Registry,Windows Installer,我正在创建一个Windows应用程序,它需要向“发送到资源管理器”上下文菜单添加一个条目,并且需要为所有用户添加该条目。由于“发送到”文件夹是针对每个用户的,没有针对所有用户的公用文件夹,因此我只有两个选择: 我可以浏览所有用户配置文件以及默认用户配置文件,找到SendTo文件夹并向其中添加快捷方式。这将确保在卸载过程中删除快捷方式 或者,每次用户登录时,我都可以确保快捷方式位于SendTo文件夹中(通过将我的应用程序添加到所有用户的启动文件夹中)。这将使我的生活在安装过程中更加轻松,但当卸载应

我正在创建一个Windows应用程序,它需要向“发送到资源管理器”上下文菜单添加一个条目,并且需要为所有用户添加该条目。由于“发送到”文件夹是针对每个用户的,没有针对所有用户的公用文件夹,因此我只有两个选择:

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

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

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


谢谢。

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


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

更简单的方法:使用exe本身的启动序列检查快捷方式在启动时是否存在,如果没有,则创建它

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

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


还请记住,每次安装都应在ActiveSetup中使用不同的条目,以确保已卸载快捷方式的用户重新运行快捷方式创建。在阅读有关ActiveSetup的更多信息之前,最后一部分可能有点不可理解:

您走错了路,因为
HKEY_用户
不会包含所有用户的配置文件。只有碰巧现在登录的用户。(加载未登录用户的配置文件没有意义。)不要尝试查找未登录用户的配置文件,因为这样做会损坏漫游配置文件。相反,请将Windows配置为在用户登录时运行可执行文件。如果尚未创建该可执行文件,请添加该文件中的条目。这是一个选项,但我需要在卸载过程中删除所有条目。我可能需要在ProgramData中创建一个可由所有人写入的文件,并在每次添加条目时进行更新。篡改未登录用户的配置文件会损坏配置文件。如果配置文件保存在您无权访问的服务器上,该怎么办?(漫游配置文件场景)我讨厌考虑潜在的安全后果。如果有人在你的可写全部文件中添加一个条目,说你的安装程序创建了一个名为
c:\boot\bcd
的文件,你的卸载程序会高兴地删除它吗?我不能浏览用户文件夹,因为用户可能会将其配置文件的一部分移动到其他地方(你可以通过拖动将SendTo文件夹移动到任何你想要的地方)。每个用户登录时删除一次该条目是个好主意。好的,谢谢,我会看看更简单的方法-按照您和@Igor的建议使用ActiveSetup,或者查看我随时间创建的快捷方式列表并删除它们。第一种更具弹性,因为在我的程序安装后,如果人们移动他们的用户文件夹,它就会起作用。我不确定,但我认为在更高版本的Windows中,ActiveSetup存在权限提升问题。