使用VB.NET以编程方式在Windows 7中配置服务设置

时间:2010-12-30 20:24:36

标签: vb.net windows-services

如果您在Windows 7中编辑服务并转到“登录”选项卡,则可以选择“允许服务与桌面交互”。我正在尝试确保使用VB.NET为某个服务设置它。有谁知道这样做的方法? 注意:在安装程序期间执行此操作不是一个选项。它必须在运行时完成。

2 个答案:

答案 0 :(得分:1)

服务配置存储在注册表中

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\

使用每个服务的密钥。

似乎类型值中的倒数第三个标志对应于“与桌面交互”值。

例如,设置为NOT与桌面不交互的服务的值为:

Type    REG_DWORD   0x0000010 (16)

而相同的服务,当设置为允许与桌面交互时,其值为:

Type    REG_DWORD   0x0000110 (272)

我不能说这是有保证的,因为我没有做任何测试,但它可能是一个好的开始。在对此值的更改生效之前,您需要重新启动服务。

答案 1 :(得分:1)

Call ChangeServiceConfig with SERVICE_INTERACTIVE_PROCESS。使用Windows API的好处是它应该处理通知和并发部分,并使用服务控制器的其他程序中的缓存无效,并且当出现问题时,您将收到错误代码。一般来说,如果您可以使用API​​来获取/设置设置,则不应访问注册表。