我正在运行一个将Windows Workflow作为服务运行的应用程序,其中包含一些自定义活动。当我以shell中的登录用户身份运行活动时,这些活动会调用带有活动的工作流,这些活动没有按预期执行。当用户在运行服务时调用活动(例如,未登录,至少不以图形方式登录),活动将失败,并且“拒绝访问”#34;错误。将代码作为登录用户运行与将其作为服务用户运行之间的区别是什么?是作为服务运行时,用户的配置文件是否无法加载?如果是这样,如何在作为服务运行时强制用户的配置文件加载?
具体来说,我正在使用的活动使用System.Management.Automation命名空间(即powershell)中的类执行远程管理。
答案 0 :(得分:0)
有点迟到的答案,但万一有人想知道。
我之前遇到过类似的问题并做过一些研究。以下是未经测试的,但可能对其他人有帮助。
作为“Windows服务”运行的进程与桌面环境之间的区别在于它被分配给Window Station。通常,服务在different station下运行,而不是desktop users。
我说通常是因为服务可以设置“SERVICE_INTERACTIVE_PROCESS”标志。这将为它提供一个桌面窗口站。有关更详细的说明,请参阅this article和this article。设置“SERVICE_INTERACTIVE_PROCESS”可以在CreateService(C# use of that)调用中完成,也可以通过选中特定服务属性下“LogOn”下的“允许服务与桌面交互”checbox手动完成。