C#写的windows服务需要启动C#写的WinForm程序

lgqt 2010-02-08 11:53:40
启动后,在进程里有Winform程序,但是winform程序没有窗体显示,怎么处理?
...全文
590 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
cpp2009s 2011-03-01
  • 打赏
  • 举报
回复
楼主,你的问题是否解决,我也遇到类似问题,

我发现在任务管理器中,Windows服务的用户名是System.
但是winform程序的用户名是当前操作系统的登录名。
xxiju203 2011-03-01
  • 打赏
  • 举报
回复
设置允许于桌面交互!
没有访问权限 2011-03-01
  • 打赏
  • 举报
回复
可以在服务的Installer的AfeterInstall事件自动开始服务的“与桌面交互”的属性:

private void ProjectInstaller_AfterInstall(object sender, InstallEventArgs e)
{
try
{
ConnectionOptions coOptions = new ConnectionOptions();
coOptions.Impersonation = ImpersonationLevel.Impersonate;
ManagementScope mgmtScope = new System.Management.ManagementScope(@"root\CIMV2", coOptions);
mgmtScope.Connect();
ServiceController service = new ServiceController(this.serviceInstaller1.ServiceName);
ManagementObject manage = new ManagementObject(string.Format("Win32_Service.Name='{0}'", service.ServiceName));
ManagementBaseObject InParam = manage.GetMethodParameters("Change");
InParam["DesktopInteract"] = true;
ManagementBaseObject OutParam = manage.InvokeMethod("Change", InParam, null);
service.Start();
}
catch (Exception ex) { ClientUpdate.Write("设置服务允许与桌面交互", ex); }
}
cpp2009s 2011-03-01
  • 打赏
  • 举报
回复
问题就在如下:

Process.Start(fileName,user,password,domain);

而服务程序的serviceProcessInstaller1的Account属性 设置的是 LocalSystem值,

请各位高手指点!
足球中国 2010-02-08
  • 打赏
  • 举报
回复
两者之间没有必然的联系。

要看你的启动如何写的。

proess.star应该没问题
Kobayashi 2010-02-08
  • 打赏
  • 举报
回复
看你的窗口是不是设置成隐藏了啊?
lovexilove 2010-02-08
  • 打赏
  • 举报
回复
结束该进程啊
lgqt 2010-02-08
  • 打赏
  • 举报
回复
看明白后再回答好不?不是windows服务里面有没有窗体的问题,是Windows服务启动另外一个winform进程,winform程序的窗体没有显示,我该怎么做才能显示呢??
mjp1234airen4385 2010-02-08
  • 打赏
  • 举报
回复
如上所说,Windows服务是没有窗体的。
你想加入窗体,那你就在注册表里加入一个自启动的程序,
等用户登录了,就可以看到自己的窗体来的。
你应该注意以一下 瑞星啦, 卡巴斯基啦,360啦,都是既有服务,
又有注册表启动项的。

这样说你应该明白了吧。
cszg_zjy 2010-02-08
  • 打赏
  • 举报
回复
什么程序啊,代码贴出来看看啊
lgqt 2010-02-08
  • 打赏
  • 举报
回复
我就是需要知道在服务里面怎么设置,或者在启动Winform程序的时候是否需要做一些特别的处理??
lgqt 2010-02-08
  • 打赏
  • 举报
回复
服务属性里面是在哪里设置啊

wuzhicheng5 2010-02-08
  • 打赏
  • 举报
回复
服务默认是不让显示WinForm的,因为是后台运行的,不能跟用户交互。
当然服务的属性里面可以设置允许这种交互。


这个正确的解答了你的疑问!
Teng_s2000 2010-02-08
  • 打赏
  • 举报
回复
怎么写啊贴点代码出来
problc 2010-02-08
  • 打赏
  • 举报
回复
服务默认是不让显示WinForm的,因为是后台运行的,不能跟用户交互。
当然服务的属性里面可以设置允许这种交互。

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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