It seems that the NameList returned by ListAvailableServers is 1-based,
although it does not fail if you use indices smaller than 1 (it just returns
an empty string). So if you use code similar to the following, you will get
a server name '(local)' for the local (default) SQL Server instance:
SQLDMO.Application app = new SQLDMO.ApplicationClass();
SQLDMO.NameList names = app.ListAvailableSQLServers();
for (int i = 1; i <= names.Count; ++i)
Console.WriteLine(names.Item(i));
HTH, Jakob.