C# 模拟作为服务运行的用户时,Excel无法正确启动
我知道,不建议将Excel作为服务运行。:-) 问题:从windows服务启动Excel可以正常工作。甚至多个实例也可以无缝地并排工作。问题产生于对AnalysisServices运行查询的必要性。不幸的是,当不使用http协议时,不会使用Analysis Services连接的用户Id/密码属性。MSAS Ole Db连接传递给正在运行进程的用户。这使得不仅需要从服务启动Excel,而且需要事先进行模拟。(如果有人有更好的想法,欢迎!) 让Excel模拟进程。在c#中启动不再起作用,因为它在引擎盖下使用CreateProcessWithLogonW,这导致在尝试加载用户配置文件时作为服务运行时出现拒绝访问错误消息 步骤:C# 模拟作为服务运行的用户时,Excel无法正确启动,c#,excel,winapi,windows-services,C#,Excel,Winapi,Windows Services,我知道,不建议将Excel作为服务运行。:-) 问题:从windows服务启动Excel可以正常工作。甚至多个实例也可以无缝地并排工作。问题产生于对AnalysisServices运行查询的必要性。不幸的是,当不使用http协议时,不会使用Analysis Services连接的用户Id/密码属性。MSAS Ole Db连接传递给正在运行进程的用户。这使得不仅需要从服务启动Excel,而且需要事先进行模拟。(如果有人有更好的想法,欢迎!) 让Excel模拟进程。在c#中启动不再起作用,因为它在引
谢谢。在任务栏管理器中检查进程的会话id?它不应为0,进程id应与winlogon.exe进程相同。另一方面,虽然线程和进程运行良好,但您不会看到任何UI。几乎可以肯定,它试图显示某种UI,但失败了。这就是为什么服务不支持它的主要原因之一——Excel是作为用户应用程序编写的,希望能够提示用户输入。您可以通过确保每个将被模拟的用户至少直接登录到此计算机一次并启动Excel(以通过任何初始设置活动)来解决此问题。@vendettamit:会话id必须为0,因为它应作为服务运行。当在某个用户的会话下运行时,将无法再控制/访问该进程。@Damien_the_unsiever:奇怪的是,当系统模拟/加载用户配置文件等时,它确实可以正常工作。当我以编程方式执行时,它只是失败了。当我使用已登录的帐户并再次尝试模拟它时(例如,使用登录\新建\凭据),它甚至会失败。当然,先决条件是打开Excel一次,然后才能像这样执行—配置了DCOM/打印机。我真正建议的是重新设计。你自己在问题中承认它不受支持。因此,找到另一种方法来实现总体目标,而不包括“从服务运行Excel”。