Member 13192395 Ответов: 0

Лучший способ изменить имя локального принтера в C#


Мне нужно иметь возможность изменить имя локального принтера в c# , но используя другие учетные данные, чем вошедший в систему пользователь. Из всей информации, которую я могу найти, кажется, что WMI-это лучший маршрут, но.... вы не можете установить учетные данные имени пользователя и пароля для подключения к локальному компьютеру.

Что-то вроде этого

private void RenamePrinter(string oldName, string newName)
        {
           
                ConnectionOptions options = new ConnectionOptions();
                options.Username = username;
                options.Password = password;
                options.EnablePrivileges = true;
                options.Authority = "ntlmdomain:DomainName";
                ManagementScope scope = new ManagementScope(@"\\.\root\CIMV2", options);
                scope.Connect();
                SelectQuery query = new SelectQuery("SELECT * FROM Win32_Printer");
                ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
                using (ManagementObjectCollection queryCollections = searcher.Get())
                {
                    foreach (ManagementObject printer in queryCollections)
                    {
                        if (printer["name"].ToString() == oldName)
                        {
                            {
                                printer.InvokeMethod("RenamePrinter",
                                                 new object[] { newName });
                            }
                            return;
                        }
                    }
                }
            }


Что я уже пробовал:

Я также пытался олицетворять пользователя, но он не используется в разделе WMI, насколько я могу судить.

Patrice T

Почему вам нужно изменить название принтера ?

0 Ответов