internal static void ExecuteDirect(EngineCommandContext ctx, bool listRemote)
 {
     string[] remoteInstances;
     if (listRemote)
     {
         Console.WriteLine("Gathering list of remote servers...");
         try
         {
             remoteInstances = SqlServerEnumerator.GetRemoteInstances();
         }
         catch
         {
             Console.WriteLine("Failed to retrieve the remote servers.");
             return;
         }
     }
     else
     {
         try
         {
             remoteInstances = SqlServerEnumerator.GetLocalInstances();
         }
         catch
         {
             Console.WriteLine("Failed to retrieve local instances.");
             return;
         }
     }
     Console.WriteLine("");
     if ((remoteInstances != null) && (remoteInstances.Length > 0))
     {
         foreach (string str in remoteInstances)
         {
             Console.WriteLine(str);
         }
     }
     else
     {
         Console.WriteLine("No SQL Server instance found.");
     }
 }
            public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
            {
                /*
                 * if (_LocalServers == null)
                 * {
                 *  //Return only local instances. Full list of instances in network is available in full SqlConnectionStringBuilder but it is slow.
                 *  var serverNames = new List<string>();
                 *  var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL");
                 *  if (key != null)
                 *  {
                 *      try
                 *      {
                 *          var names = key.GetValueNames();
                 *          foreach (var name in names)
                 *          {
                 *              //Default instance - MSSQLSERVER
                 *              if (string.Compare(name, "MSSQLSERVER", true) == 0)
                 *                  serverNames.Add(".");
                 *              else
                 *                  serverNames.Add($@".\{name}");
                 *          }
                 *      }
                 *      finally
                 *      {
                 *          key.Close();
                 *      }
                 *  }
                 *
                 *  _LocalServers = new StandardValuesCollection(serverNames);
                 * }
                 */

                if (_LocalServers == null)
                {
                    var servers = SqlServerEnumerator.ListSqlServers();
                    _LocalServers = new StandardValuesCollection(servers);
                }

                return(_LocalServers);
            }