第一次写Windows服务程序,XP下一个MessageBox都弹不出来,在Services.msc中允许其与桌面交互后,MessageBox就能正常弹出。但在Win7下总是弹出[Windows交互式服务检测]的对话框,即使选择显示消息,也完全是在另一个环境下显示的,这是在Win7下交互式服务所面临的共同问题。
在百度上查了一下,知道交互式服务检测由Interactive Services Detection服务完成。当有服务要与桌面交互的时候,就会触发Interactive Services Detection服务,接着弹出[Windows交互式服务检测]的对话框。
禁用Interactive Services Detection是无法解决问题的,这样连[Windows交互式服务检测]都不会出现,更何况是与桌面交互的内容呢。
后来我想到新建一个子程序,由这个子程来显示我的对话框
服务无法显示出对话框,子程不是一个服务,不存在与桌面交互的限制,我想这样应该没问题了吧。。。
现实是残酷的。。。我就运行Calc.exe,可爱的计算器压根都出不来,出来的还是那个该死的[Windows交互式服务检测]。。。那时我想屎的心都有了。。。
困扰我N多天,我突然发觉不对劲。同样作为服务,为什么Interactive Services Detection就能弹出[Windows交互式服务检测]的对话框,我们写的服务就弹不出呢???凭什么丫
于是我把焦点集中在Interactive Services Detection服务上。查看Interactive Services Detection服务主程序UI0Detect.exe的输入表,看到CreateProcessAsUser的时候好像想到了些什么。再