Windows服务无法看到Shell\u TrayWnd

Windows服务无法看到Shell\u TrayWnd,windows,service,taskbar,Windows,Service,Taskbar,我需要通过Windows服务隐藏任务栏和开始按钮 在控制台程序中,我可以成功调用FindWindow和/或EnumWindows以获取“Shell\u TrayWnd”窗口,然后使用ShowWindow(hwnd,SW\u hide)将其隐藏 但是当服务执行FindWindow(“Shell\u TrayWnd”,NULL)时,它返回NULL,当服务执行EnumWindows时,它会得到一个不完整的列表,其中不包括“Shell\u TrayWnd”窗口 有人能建议一个服务如何查看“Shell\u

我需要通过Windows服务隐藏任务栏和开始按钮

在控制台程序中,我可以成功调用
FindWindow
和/或
EnumWindows
以获取
“Shell\u TrayWnd”
窗口,然后使用
ShowWindow(hwnd,SW\u hide)
将其隐藏

但是当服务执行
FindWindow(“Shell\u TrayWnd”,NULL)
时,它返回
NULL
,当服务执行
EnumWindows
时,它会得到一个不完整的列表,其中不包括
“Shell\u TrayWnd”
窗口


有人能建议一个服务如何查看“Shell\u TrayWnd”窗口吗,或者建议另一种隐藏任务栏和开始按钮的方法(在服务中工作)?谢谢。

不幸的是,服务无法访问windows。这是服务的(设计)限制。

为服务提供UI(或与UI元素交互)的正确方法是提供GUI客户端,该客户端在用户上下文中运行,并使用某些IPC方法(可能是RPC,可能是消息传递)与服务通信。特权服务中的UI处理一直是一个安全漏洞

如果您只是想让一个计算机智能进程终止任务栏,那么服务既不需要也没有帮助。将计划任务配置为在登录时运行。或者将注册表设置为启动自定义shell而不是explorer.exe。除了用户自己的帐户之外,您没有做任何需要特权的事情


为避免控制台窗口闪烁,请为
WINDOWS
子系统生成程序,或在生成完成后使用
editbin/subsystem:WINDOWS
更改PE标题中的标志。

服务通常在不可见的虚拟机下运行。看看这是否有帮助:显然,前面链接中的选项是在XP之后删除的:一方面,我对WinXP解决方案很满意,至少目前是这样。另一方面,我尝试将0x100输入服务的类型值,然后重新启动服务,但服务仍然无法看到桌面窗口,包括任务栏和开始按钮。谢谢你的主意。