Security 在NT服务器中使用UI调用另一个AP

Security 在NT服务器中使用UI调用另一个AP,security,winapi,windows-services,windows-vista,Security,Winapi,Windows Services,Windows Vista,我有一个NT服务器应用程序在Windows Vista的后台运行,我希望服务器在收到特定命令时运行lanuch Notepad.exe,但它不工作,我尝试了shellexec、winexec和createprocess函数,都失败了。记事本总是在服务器桌面上运行,Vista会显示一条消息要求我切换它。有没有办法正确启动它?您是否尝试过在STARTUPINFO结构的lpDesktop成员中使用要打开它的桌面的名称调用CreateProcess?请参阅。这是因为。您的服务正在终端服务会话0中运行,您

我有一个NT服务器应用程序在Windows Vista的后台运行,我希望服务器在收到特定命令时运行lanuch Notepad.exe,但它不工作,我尝试了shellexec、winexec和createprocess函数,都失败了。记事本总是在服务器桌面上运行,Vista会显示一条消息要求我切换它。有没有办法正确启动它?

您是否尝试过在
STARTUPINFO
结构的
lpDesktop
成员中使用要打开它的桌面的名称调用
CreateProcess
?请参阅。

这是因为。您的服务正在终端服务会话0中运行,您的用户已登录到会话1或更高版本,并且两者之间的交互受到严格限制


官方支持的方法是让助手应用程序已经在用户桌面上运行,通过某种IPC(例如管道、套接字)与服务对话。然后,当您的服务想要与用户桌面交互时,它会要求帮助程序为您执行此操作。

由于UAC问题,我希望我的NT服务器避免此操作。这意味着我希望NT服务器访问的AP需要完全的管理员权限。如果一个助手应用程序已经在用户桌面上运行,它仍然需要显示UAC对话框。这就是UAC的要点-如果你的应用程序需要提升权限,它应该向用户请求权限。Vista被设计成不允许你想要达到的目标-我不是说这是不可能的,我相信恶意软件社区已经/将会想出解决办法,但是如果你是一个合法的开发者,那么你需要重新考虑你的设计,这样你就不需要打败UAC或会话0隔离。