System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo();
            info.FileName = @"d:\1\uninst.exe";
            info.Domain = "OK";
            info.UseShellExecute = true;
            System.Diagnostics.Process pro = null;
            pro = System.Diagnostics.Process.Start(info);
            pro.WaitForExit(3600000);//1小时
            MessageBox.Show("");
一般的安装程序或者应用程序都能阻塞,就是卸载程序无法阻塞,不知道为什么

解决方案 »

  1.   

    uninst.exe一瞬间就执行完毕了。它只是触发主程序去卸载,它自己又不进行卸载动作。
      

  2.   

    试一试执行从注册表里取得 public string GetUninstallCommandFor(string productDisplayName)
            {
                RegistryKey localMachine = Registry.LocalMachine;
                string productsRoot = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products";
                RegistryKey products = localMachine.OpenSubKey(productsRoot);
                string[] productFolders = products.GetSubKeyNames();            foreach (string p in productFolders)
                {
                    RegistryKey installProperties = products.OpenSubKey(p + @"\InstallProperties");
                    if (installProperties != null)
                    {
                        string displayName = (string)installProperties.GetValue("DisplayName");
                        if ((displayName != null) && (displayName.Contains(productDisplayName)))
                        {
                            string uninstallCommand = (string)installProperties.GetValue("UninstallString");
                            return uninstallCommand;
                        }
                    }
                }            return "";
                
            }注册表里取出的是这样的字符串: MsiExec.exe /X{90120000-0021-0409-0000-0000000FF1CE}MsiExec.exe的/quiet参数,没有用户参与。代码来自:
    https://sites.google.com/site/msdevnote/home/programmatically-uninstall-programs-with-c