обновление объекта управления win32_printer занимает так много времени - PullRequest
0 голосов
/ 25 февраля 2009

Я использую следующий фрагмент кода для изменения свойства принтера "port". Проблема в том, что он выполняется дольше минуты. Есть ли способ ускорить это? Могу ли я создать экземпляр объекта управления не со всеми свойствами объекта wmi? И что еще более важно, как я могу обновить только 1 свойство? Может быть, мне следует создать объект управления без поисковика?

ManagementPath mPath = new ManagementPath();
mPath.Server = Server.TrimStart(new char[] {'\\'});
mPath.NamespacePath = "root\\cimv2";
ManagementScope mScope = new ManagementScope();
mScope.Options.Impersonation = ImpersonationLevel.Impersonate;
mScope.Path = mPath;
SelectQuery sQ = new SelectQuery();
sQ.ClassName = "Win32_Printer";

//sQ.SelectedProperties.Add("PortName");
//sQ.SelectedProperties.Add("DeviceID");

sQ.Condition = string.Format("Name=\"{0}\"", Name);

ManagementObjectSearcher s = new ManagementObjectSearcher(mScope, sQ);
foreach (ManagementObject service in s.Get())
{
string oldname = service.Properties["PortName"].Value.ToString();
service.Properties["PortName"].Value  = PortName;
service.Put( );
this.Port = PortName;
return true;

}

1 Ответ

0 голосов
/ 25 февраля 2009
  ManagementPath mPath = new ManagementPath() ;
        mPath.NamespacePath = "root\\cimv2";
        mPath.Server = Server.TrimStart(new char[] { '\\' });
        mPath.RelativePath = "Win32_Printer.DeviceID=\"" + Name + "\"";
        ManagementObject Printer = new ManagementObject(mPath);
        string oldname = Printer.Properties["PortName"].Value.ToString();
        Printer.Properties["PortName"].Value = PortName;
        Printer.Put();

этот работает быстрее, хотя я думаю, что он может быть улучшен и дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...