Как установить драйвер принтера от имени администратора? - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день, бьюсь над установкой драйвера уже не одну неделю, подскажите как реализовать установку драйвера от имени администратора на том компьютере с которого выполняется программа, есть код на WMI но он работает только если текущий пользователь администратор, так же если использую класс МАНАДЖМЕНТСКОПЕ то пишет ошибку что нельзя выполнять подключение на локальной машине
ManagementClass PrinterDriverClass = new ManagementClass(new ManagementPath("Win32_PrinterDriver"), null);
ManagementObject PrinterDriverObject = PrinterDriverClass.CreateInstance();
PrinterDriverObject["Name"] = printerDriver;
PrinterDriverObject["InfName"] = printerDriverInf;
ManagementBaseObject inParams = PrinterDriverClass.GetMethodParameters("AddPrinterDriver");
inParams["DriverInfo"] = PrinterDriverObject;
ManagementBaseObject outParams = PrinterDriverClass.InvokeMethod("AddPrinterDriver", inParams, null);

Решение задачи: «Как установить драйвер принтера от имени администратора?»

textual
Листинг программы
string path = "";
string arguments = "";
string _system32 = Environment.GetEnvironmentVariable("SYSTEMROOT") + @"\System32";
//сначала сы удаляем принтер, для того чтобы не создавались дополнительные копии принтера       
//удаление принтера удаляет и порт принтера 
path = _system32 + @"\rundll32.exe";
arguments = @"printui.dll,PrintUIEntry /dl /n " + ""Test Printer""+@" /q";//параметр /q для того чтобы мы не видели ошибку при первой установке(принтер не найден)
RunAs(path, arguments, "IES", "login", "passwd");   //запуск проги от имени админа  
//создание порта принтера
path = "cscript";
arguments = @"C:\Windows\System32\Printing_Admin_Scripts\ru-RU\prnport.vbs -a -r IP_10.205.41.70 -h 10.205.41.70 -o raw";
RunAs(path, arguments, "IES", "login", "passwd");
 
//установка принтера
path = _system32 + @"\rundll32.exe";
arguments = @"printui.dll,PrintUIEntry /if /b " + ""Test Printer"" + @" /f " + """ + @"C:\z_distrib\WorkCentre 5222 PCL6\x2GKOHX.inf" + """ + @" /Z /r IP_10.205.41.70 /m " + ""Xerox WorkCentre 5222 PCL6" + """;
RunAs(path, arguments, "IES", "login", "passwd");

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.667 из 5
Похожие ответы