卸载时删除注册表键

5
我有一个简单的C#应用程序,允许用户指定是否应该在Windows启动时启动它(或不启动);它通过设置(或删除)注册表键值来实现这一点(即...\Software\Microsoft\CurrentVersion\Run\MyApplicationHere)。
我使用VS安装程序项目创建此程序的安装程序。我不希望安装程序创建此键值;它只应在用户从程序内部选择选项时创建。
这里有个问题:如果存在该键,则我希望卸载程序删除该键,最好不要使用任何hackery;如果有一个简单的“内置”解决方案,我很乐意听到它。谢谢!
3个回答

8

只需右键单击 "Setup",然后选择 "查看 -> 注册表",您可以将注册表键添加到列表中。该键具有属性(右键单击 -> 属性)AlwaysCreate、DeleteAtUninstall 和 Transitive,请将 AlwaysCreate 设置为 false,DeleteAtUninstall 设置为 true,并将 Transitive 也设置为 true,然后完成即可。


1
这与 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 不兼容。当我将 Run 键上的 DeleteAtUninstall 设置为 true 时,它会删除该键中的所有值(包括其他应用程序创建的值)。 - ndreisg

2
Registry表格就是为此而设计的:
http://msdn.microsoft.com/en-us/library/aa371168(VS.85).aspx 请特别查看“Name”下的描述:
如果值列为空,则下表中“Name”列中显示的字符串具有特殊意义。 - 如果组件被卸载,存在的键及其所有值和子键都将被删除。

如果您指定从HKCU中删除,那么这只会删除当前用户的HKCU,而不是所有用户的HKCU吗? - Rory
你如何在Visual Studio设置项目中访问“Registry”表? - transistor1

0

尝试创建自定义卸载操作以删除该键。虽然不是非常“内置”,但只需要几行代码。


这个很好用,如果没有更多的“内置”答案,那对我来说已经足够了。谢谢。 - Zach Snow
1
如果您右键单击安装项目,选择“查看”->“注册表”,则可以将注册表键添加到列表中。该键具有属性(右键单击->“属性”)AlwaysCreate和DeleteAtUninstall,根据Registry表中的其他帖子中的内容,应执行所需操作。不要向键添加值,将AlwaysCreate设置为false,并将DeleteAtUninstall设置为true。 - Hannes Nel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接