关于软件卸载时,想把注册表里面的项和键值删除,不知道怎么实现

lhwxf1987 2011-04-29 11:25:15
有高人吗,指点一下。
目前,我知道的是在一些打包软件可以实现对注册表键值的删除,但不知道考不靠谱?
还有据说,在uninstall方法里也可以实现,但不会用,求高手给出实例说明一下?
...全文
302 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhwxf1987 2011-05-06
  • 打赏
  • 举报
回复
有启发,感谢回帖
十八道胡同 2011-05-02
  • 打赏
  • 举报
回复
新建个项目,直接在Program.cs中修改如下
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using Microsoft.Win32;

namespace uninstall
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
string sysroot = System.Environment.SystemDirectory;
System.Diagnostics.Process.Start(sysroot + "\\msiexec.exe", "/x {51B1E78D-AC3D-41A1-A4FB-83C1168DE6C0} /qr");//红色部分就是你的产品ID
//下面是删除注册表的信息
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE", true);
software.DeleteSubKeyTree("管理系统");
}
}
}
然后将生成后的EXE和安装文件一起打包就可以了!

http://topic.csdn.net/t/20060914/16/5022509.html
lhwxf1987 2011-05-02
  • 打赏
  • 举报
回复
打包软件我已经学会了,就差uninstall()的方法了。
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
threenewbee 2011-04-29
  • 打赏
  • 举报
回复
所有的打包软件都有这个功能。

但是是否删除干净就不好说了。

这也不能怪卸载软件。情况是复杂的:

- 程序运行的时候增加或者修改了注册表项,卸载程序只能处理安装的时候记录下来添加上去的,但是对程序运行期前产生的注册表项就不敢乱删了
- 多个程序共享了同一个注册表项,或者共享了同一个库文件,为了避免删除掉导致别的软件无法工作,不敢删除
- 卸载程序运行的时候一些注册表条目被系统锁定,或者权限关系,无法操作

卸载软件的删除策略是通用的和保守的。一般地说,少删除一个注册表数据无非就是增加一点垃圾,但是错删则可能导致软件失效或者严重的问题。所以作为通用卸载软件的开发者肯定考虑安全第一。相反,那些标榜系统垃圾清理的所谓优化软件,往往不问青红皂白一顿乱删,电脑小白喜欢使用,因为过不了多久系统出现奇怪的问题他们又有折腾的机会了。

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧