C#卸载程序需要密码/防卸载功能

C#打包自定义卸载密码弹窗

.Net-2019-10-18-打包自定义操作

  这是我第一次写博客,希望大家多多支持,又不合理的地方请多包含,可以私信我。
 本次内容只要针对不熟悉打包时不熟悉自定义操作所带来的一些问题,并给出解决方案。
 下面将以卸载时弹出卸载密码提示窗口为例讲解。

1.新建一个windows应用窗体(需要在安装或卸载时弹出窗口,不需要弹窗可以新建一个类库),我将之命名为“UninstallDemo”
2.新建一个安装类,我将之命名为“Installer1.cs”
在这里插入图片描述
Form1界面
在这里插入图片描述
Form1代码

 public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "123")
            {
                DialogResult = DialogResult.OK;
            }
            else
            {
                MessageBox.Show("密码错误");
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.No;

        }

Installer1.cs代码

 public Installer1()
        {
            InitializeComponent();
            this.BeforeUninstall += new InstallEventHandler(Pawss);//卸载操作前发生。当然也有卸载操作发生后、安装操作发生前、后;
        }
        void Pawss(object sender, EventArgs e)
        {
            Form1 form = new Form1();
            form.ShowDialog();
            if (form.DialogResult == DialogResult.OK)
            {
                return;  //继续执行卸载操作
            }
            else
            {
                this.Rollback(null);//执行回滚操作
            }
        }

3.在创建好的安装程序右击添加输出项,选择UninstallDemo添加。添加完成后你会看到–主输出来自UninstallDemo(活动)
在这里插入图片描述
4.安装程序右击选择视图----自定义操作
在这里插入图片描述
5.右击卸载—添加自定义操作—双击应用程序文件夹
在这里插入图片描述
进行到这一步就可以重新打包了,在卸载的时候就会弹出密码验证窗口

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是一个简单的卸载程序的示例代码: ```csharp using System; using System.Diagnostics; namespace Uninstaller { class Program { static void Main(string[] args) { // 获取卸载程序的名称 string appName = "MyApp"; // 修改为你需要卸载程序名称 // 构造卸载命令 string uninstallCommand = String.Format("/x{{UninstallString}}", appName); // 查找卸载程序的注册表项 string uninstallKeyPath = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; Microsoft.Win32.RegistryKey uninstallKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(uninstallKeyPath, false); if (uninstallKey != null) { foreach (string subKeyName in uninstallKey.GetSubKeyNames()) { // 打开卸载程序的注册表项 Microsoft.Win32.RegistryKey subKey = uninstallKey.OpenSubKey(subKeyName, false); if (subKey != null) { // 检查卸载程序的名称是否匹配 object displayName = subKey.GetValue("DisplayName"); if (displayName != null && displayName.ToString().Contains(appName)) { // 获取卸载程序的命令行 object uninstallString = subKey.GetValue("UninstallString"); if (uninstallString != null) { string commandLine = uninstallString.ToString(); commandLine = commandLine.Replace("{GUID}", ""); commandLine = commandLine.Replace("\"", ""); // 执行卸载命令 ProcessStartInfo psi = new ProcessStartInfo("cmd.exe", "/c " + commandLine); psi.WindowStyle = ProcessWindowStyle.Hidden; Process p = Process.Start(psi); p.WaitForExit(); Console.WriteLine("Uninstall completed."); return; } } subKey.Close(); } } uninstallKey.Close(); } Console.WriteLine("Uninstall failed."); } } } ``` 注意:需要管理员权限运行程序以执行卸载操作。另外,程序中的 `appName` 变量需要修改为你需要卸载程序名称。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值