C# 是否可以在Windows服务中使用WMI?
我正在编写一个简单的服务,根据连接的位置设置默认打印机,但在服务中使用WMI时遇到问题。我想得越多,就越不可能做我想做的事情;因为服务与特定的用户没有关联,但我想无论如何我都会询问它,以防我的怀疑是错误的 这就是我正在做的C# 是否可以在Windows服务中使用WMI?,c#,windows-services,wmi,C#,Windows Services,Wmi,我正在编写一个简单的服务,根据连接的位置设置默认打印机,但在服务中使用WMI时遇到问题。我想得越多,就越不可能做我想做的事情;因为服务与特定的用户没有关联,但我想无论如何我都会询问它,以防我的怀疑是错误的 这就是我正在做的 服务订阅了NetworkChange.NetworkAvailabilityChanged事件 收到事件时,查询WMI从Win32\u打印机中选择*,其中Network=true 循环浏览ManagementObjectCollection,检查每台打印机的状态 如果打印机已
NetworkChange.NetworkAvailabilityChanged
事件从Win32\u打印机中选择*,其中Network=true
ManagementObjectCollection
,检查每台打印机的状态要更改Windows上已部署服务的权限,请转到“开始”>“管理工具”>“服务”,然后您可以更改给定服务的服务帐户。我知道这是一个老问题,但我觉得现有的答案并不能提供一个可管理的解决方案 正如所指出的,要实现用户默认打印机选择,您需要作为该用户进行身份验证,同时可以将windows服务设置为以特定用户身份登录,更好的解决方案是 使用隐藏表单创建winforms程序,并在用户使用任务调度器登录时启动它 这样,许多用户都可以使用PC,并且无需更改服务登录设置即可从应用程序中获益
我建议使用winforms应用程序,因为它有一个较低的入口栏,您可以使用任何其他类型的从UI角度看不可见的项目类型。该服务必须以某个用户的身份运行,例如网络服务、本地服务、系统服务?您需要确保给定的帐户具有执行所需操作的权限。@Serguei-如何以用户身份运行该服务?部署该服务后,您可以在“服务属性”中设置服务帐户,前提是您使用的是windows Start>Admin Tools>Services。@Serguei-请添加您的注释作为答案,以便我可以接受,谢谢您的帮助。开始->控制面板->管理工具->服务,右键单击服务并选择“属性”,然后切换到登录选项卡。您可以设置服务运行所使用的帐户,并从中提供所需的任何密码。