Windows服务启动外部程序与桌面交互的问题(服务以某个账户启动)

realcolafish 2007-12-04 09:49:33
我通过一个服务A去启动另外一个程序B,如果服务A以本地系统方式启动,则可以和桌面交互,启动程序B的时候可以看到程序B的界面。如果服务A以某个帐号(Administrator)启动,则由它启动的程序B看不到界面。我查了N多的资料都没有这方面的介绍,请达人指教。

如果有人想回答:InterActice:=true 则请不要回复了,谢谢!
...全文
442 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
上岸の鱼 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sdzeng 的回复:]
主要是桌面的问题,
用CreateProcess 或者CreateProcessAsUser
给参数lpStartupInfo.lpDesktop指定为默认桌面WinSta0\\Default
[/Quote]
正解
realcolafish 2008-01-02
  • 打赏
  • 举报
回复
由于这个B程序需要使用ODBC去连接数据库,原先ODBC是建立在用户DSN下的,所以如果使用SYSTEM去启动会发生无法读取ODBC的问题,后来把ODBC建立在系统DSN下就解决了。

虽然没有去试验ysai和sdzeng的方法,但是还是非常感谢你们!
AppFirst 2007-12-24
  • 打赏
  • 举报
回复
你这个需要获取当前的工作区。如果你想要代码可以在www.delphibbs.com搜以我的用户名发的帖子。
zhao_yong 2007-12-04
  • 打赏
  • 举报
回复
頂一下.
ysai 2007-12-04
  • 打赏
  • 举报
回复
试试
用OpenDesktop打开Default桌面
新建个线程,线程的Execute里,SetThreadDesktop把自己设置到Default桌面
线程里启动应用程序
ideation_shang 2007-12-04
  • 打赏
  • 举报
回复
先弄明白windows用户登录的原理 和 桌面的原理 自然你就明白了
sdzeng 2007-12-04
  • 打赏
  • 举报
回复
主要是桌面的问题,
用CreateProcess 或者CreateProcessAsUser
给参数lpStartupInfo.lpDesktop指定为默认桌面WinSta0\\Default

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧