Как изменить имя порта принтера с помощью C#

Я отсканировал ТАК и не видел этот вопрос, извините, если я пропустил его, и это повторение.

Я могу найти сетевой принтер в PrinterSettings.InstalledPrinters и извлечь свойство "PortName" из printer.Properties, но просто установка свойства не работает. Я пытался перебить изменение этого имени порта принтера в реестре, но это тоже не сработало (хотя я действительно не думал, что это произойдет, но мне пришлось попробовать).

У меня новый порт реализован с помощью загрузки файла reg, поэтому не нужно создавать порт. (Кстати, я знаю, что порт работает, потому что установка его в свойствах принтера работает нормально).

Ваша помощь приветствуется.

Спасибо

1 ответ

Решение

Вы можете использовать WMI, чтобы установить имя порта для вашего принтера. Вот пример:

ManagementScope scope = new ManagementScope(@"\root\cimv2");
scope.Connect();

// Insert your printer name in the WHERE clause...
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Printer WHERE Name='PrinterName");


foreach (ManagementObject printer in searcher.Get())
{
  printer["PortName"]="LPT1:";
  printer.Put();  // Important: Call put to save the settings.
}

Надеюсь это поможет.

Другие вопросы по тегам