2010-12-28 2 views
0

Я пишу простой сервис, чтобы установить принтер по умолчанию, основанный на том, где я подключен, но у меня возникают проблемы с использованием WMI в моей службе. Чем больше я думаю об этом, тем меньше думаю, что можно делать то, что я пытаюсь сделать; поскольку служба не связана с конкретным пользователем, но я думал, что все равно спрошу об этом, если мои подозрения ошибочны.Возможно ли использовать WMI в службе Windows?

Вот что я делаю.

  1. Служба подписки на NetworkChange.NetworkAvailabilityChanged Событие.
  2. Когда принимается запрос WMI SELECT * FROM Win32_Printer WHERE Network=true.
  3. Пройдите через ManagementObjectCollection и проверьте состояние каждого принтера.
  4. Если принтер подключен вызов ManagementObject.InvokeMethod("SetDefaultPrinter",null)

Когда я проверяю событие безопасности журнала я заметил Failure Audit события «Неизвестное имя пользователя или пароль», который я предполагаю, что это потому, что я явно не предоставить эту информацию ,

Есть ли способ сделать это без указания имени пользователя и пароля или учетных данных, необходимых для целей безопасности?

+1

Служба должна работать как * некоторый пользователь, что-то вроде NETWORK SERVICE, LOCAL SERVICE, SYSTEM, возможно? Вы должны убедиться, что у данной учетной записи есть разрешение делать то, что вы хотите. – Serguei

+0

@Serguei - Как запустить службу в качестве пользователя? – Tester101

+0

После развертывания службы вы можете установить учетную запись службы в свойствах службы, если вы находитесь в окнах «Пуск»> «Инструменты администратора»> «Службы». – Serguei

ответ

1

Служба должна работать как пользователь, например NETWORK SERVICE, LOCAL SERVICE или SYSTEM. Вы должны убедиться, что у данной учетной записи есть разрешение делать то, что вы хотите. Чтобы изменить разрешение развертываемой службы в Windows, откройте «Пуск»> «Администрирование»> «Службы», затем вы можете изменить учетную запись службы для данной службы.

0

Я знаю, что это старый вопрос, но я чувствую, что существующий ответ не вполне обеспечивает приемлемое решение.

Как указует осуществить выбор на пользователь по умолчанию принтера вы должны быть заверены в качестве этого пользователя и в то время как можно установить службы Windows для входа в систему в качестве конкретного пользователя лучшего решения было бы ...

Создайте программу winforms, используя скрытую форму, и запустите ее, когда пользователь входит в систему с помощью планировщика заданий.

Таким образом, ПК может использоваться многими пользователями и извлекать выгоду из приложения без необходимости изменять настройки входа в систему.

Я предложил приложение winforms, так как оно имеет панель ввода с низким значением, вы можете использовать любой другой вид невидимого из перспективного типа интерфейса пользовательского интерфейса.

Смежные вопросы