Если Вы просто хотите имя принтера никакое преимущество вообще. Но WMI способен к возврату целого набора других свойств принтера:
using System;
using System.Management;
namespace Test
{
class Program
{
static void Main(string[] args)
{
ObjectQuery query = new ObjectQuery(
"Select * From Win32_Printer " +
"Where Default = True");
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(query);
foreach (ManagementObject mo in searcher.Get())
{
Console.WriteLine(mo["Name"] + "\n");
foreach (PropertyData p in mo.Properties)
{
Console.WriteLine(p.Name );
}
}
}
}
}
и не просто принтеры. Если Вы интересуетесь каким-либо видом связанных с компьютером данных, возможности - Вы, может получить его с WMI. WQL (версия WMI SQL) является также одним из своих преимуществ.
в итоге использовал это:
using (OleDbConnection conn = new OleDbConnection(connString))
{
conn.Open();
dtSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
Sheet1= dtSchema.Rows[0].Field<string>("TABLE_NAME");
}
Вы можете использовать GetOleDbSchemaTable (VB) или GetOleDbSchemaTable (C #).
Все имена рабочих листов будут возвращены как часть таблицы данных, которую вы можете просмотреть.
Используя OleDbSchemaGuid, информацию можно получить в
- Столбцах
- Внешних ключах
- Индексах
- Первичных ключах
- Таблицы
- Просмотры
Полная документация MSDN доступна здесь