예제 #1
0
        private bool retrieveRegistry()
        {
            var tablePathRagistry = new string[] {
                @"SOFTWARE\Wow6432Node\",
                @"SOFTWARE\"
            };
            var tableIdsProduct = this.tableInfosProduct.Keys;

            foreach (var pairInfoProduct in this.tableInfosProduct)
            {
                var infoProduct        = pairInfoProduct.Value;
                var idProductAuth      = pairInfoProduct.Key;
                var idProductUnInstall = infoProduct.idProductUnInstall;
                var nameKey            = @"DOGA-" + idProductUnInstall;
                foreach (var pathRegistry in tablePathRagistry)
                {
                    var builder = new StringBuilder();
                    builder.Append(pathRegistry);
                    builder.Append(@"Microsoft\Windows\CurrentVersion\Uninstall\");
                    builder.Append(nameKey);

                    var key = Registry.LocalMachine.OpenSubKey(builder.ToString());
                    if (key == null)
                    {
                        continue;
                    }
                    var pathUnInstall = (string)key.GetValue("UninstallString");
                    if (pathUnInstall == null)
                    {
                        continue;
                    }

                    var regexp            = new Regex(@"uninst[\w\d]*\.exe");
                    var matched           = regexp.Match(pathUnInstall);
                    int indexUninstallExe = matched.Index;
                    var pathInstalled     = pathUnInstall.Substring(0, indexUninstallExe);
#if DOGALX_DLL_CHECK_USER_REGISTRATION
                    if (!checkUserRegistration(pathInstalled, infoProduct))
                    {
                        continue;
                    }
#endif
                    var infoInstall = new InstallInfo(pathInstalled, infoProduct);
                    this.tableInfosInstall.Add(idProductAuth, infoInstall);
                    break;
                }
            }
            return(true);
        }
예제 #2
0
 public InstallInfo(InstallInfo infoInstall)
     : base(infoInstall.infoProduct)
 {
     this.pathInstalled = infoInstall.pathInstalled;
     this.loadProfileIni();
 }