问题描述
window服务账户为LocalSystem,在服务中启动新进程,在进程中报错//子进程代码System.Threading.Thread.Sleep(30*1000);log4net.Config.XmlConfigurator.Configure();varloger=log4net.LogManager.GetLogger("TEST");loger.Info("Start");try{for(inti=0;i<100;i++){Labellabel=newLabel();label.CreateControl();label.Text=i+1+"";}}catch(Exceptionex){loger.Error(ex.Message);}Console.ReadKey();
错误信息目前未模仿客户端的线程试图在模仿令牌上操作。我想可能是当前账户不能创建界面,如何设置子进程可以类似“允许桌面交互”的功能
解决方案
解决方案二:
服务本身就不是为了来显示界面用的,而且它最大的优势也是在没有用户登录的情况下能够正常运行,此时何来界面
解决方案三:
服务需要自动执行一些模拟用户操作。不可能把所有的界面功能重写的。
解决方案四:
自己搞定了,用特定的账户启动使用CreateProcessAsUser自带的ProcessStartInfo里面指定好像不行,不管有没权限都提示拒绝访问!参考https://social.msdn.microsoft.com/Forums/vstudio/en-US/0c0ca087-5e7b-4046-93cb-c7b3e48d0dfb/how-run-client-application-as-a-windows-service-in-c?forum=csharpgeneral