Я пишу простой сервис, чтобы установить принтер по умолчанию, основанный на том, где я подключен, но у меня возникают проблемы с использованием WMI в моей службе. Чем больше я думаю об этом, тем меньше думаю, что можно делать то, что я пытаюсь сделать; поскольку служба не связана с конкретным пользователем, но я думал, что все равно спрошу об этом, если мои подозрения ошибочны.Возможно ли использовать WMI в службе Windows?
Вот что я делаю.
- Служба подписки на
NetworkChange.NetworkAvailabilityChanged
Событие. - Когда принимается запрос WMI
SELECT * FROM Win32_Printer WHERE Network=true
. - Пройдите через
ManagementObjectCollection
и проверьте состояние каждого принтера. - Если принтер подключен вызов
ManagementObject.InvokeMethod("SetDefaultPrinter",null)
Когда я проверяю событие безопасности журнала я заметил Failure Audit события «Неизвестное имя пользователя или пароль», который я предполагаю, что это потому, что я явно не предоставить эту информацию ,
Есть ли способ сделать это без указания имени пользователя и пароля или учетных данных, необходимых для целей безопасности?
Служба должна работать как * некоторый пользователь, что-то вроде NETWORK SERVICE, LOCAL SERVICE, SYSTEM, возможно? Вы должны убедиться, что у данной учетной записи есть разрешение делать то, что вы хотите. – Serguei
@Serguei - Как запустить службу в качестве пользователя? – Tester101
После развертывания службы вы можете установить учетную запись службы в свойствах службы, если вы находитесь в окнах «Пуск»> «Инструменты администратора»> «Службы». – Serguei