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