0

我正在创建一个 Windows 应用程序,它需要向 Send-To 资源管理器上下文菜单添加一个条目,并且需要为所有用户这样做。由于 Send-To 文件夹对每个用户都是特定的,所有用户都没有公用文件夹,所以我有两个选择:

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

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

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

谢谢。

4

2 回答 2

0

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

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

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

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

于 2012-09-06T00:50:15.520 回答
0

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

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

于 2012-09-04T12:23:17.290 回答