C#System.Diagnostics.Process不';我不能正常工作

C#System.Diagnostics.Process不';我不能正常工作,c#,windows-services,dropbox-api,processstartinfo,C#,Windows Services,Dropbox Api,Processstartinfo,我正在Windows服务应用程序中使用System.Diagnostics.Process。我调用的应用程序使用DropBox API和Google Drive API。当我登录Google Drive或DropBox时,它应该打开Web浏览器并允许访问Drop或Drive,但它没有打开它。其他功能正常工作(在本地计算机上创建文件夹、读取文件、写入日志文件等) 当我用双击手动打开此应用程序时,登录过程正常,显示web浏览器,我可以允许访问 使用Saraff Twain的其他应用程序也会发生类似的

我正在Windows服务应用程序中使用System.Diagnostics.Process。我调用的应用程序使用DropBox API和Google Drive API。当我登录Google Drive或DropBox时,它应该打开Web浏览器并允许访问Drop或Drive,但它没有打开它。其他功能正常工作(在本地计算机上创建文件夹、读取文件、写入日志文件等)

当我用双击手动打开此应用程序时,登录过程正常,显示web浏览器,我可以允许访问

使用Saraff Twain的其他应用程序也会发生类似的情况。如果我手动打开它,它工作正常,我可以扫描和保存文件(在此过程中会显示一些警报或消息框,如“扫描”、“无纸”、“无扫描仪”消息),但当windows服务调用它时,不会显示任何消息,它会扫描和保存文件,但不会显示消息

如果我从另一个windows窗体或控制台应用程序调用此应用程序,应用程序将正常工作

我不知道Windows服务有什么问题

谢谢你的帮助

以下是我在Windows服务应用程序(此处失败)和Windows窗体应用程序(此处工作正常)中使用的代码。我尝试调用CMD.exe和应用程序路径作为参数,并直接在文件名上指定路径

p.StartInfo.UseShellExecute=false;
p、 StartInfo.WindowStyle=System.Diagnostics.ProcessWindowStyle.Hidden;
p、 StartInfo.RedirectStandardOutput=true;
p、 StartInfo.FileName=“cmd.exe”;
p、 StartInfo.Arguments=“/C”+“\”+execName+“\”+参数;
//p、 StartInfo.Verb=“runas”;
//writegline(参数+“”+execName);
p、 Start();
输出=p.StandardOutput.ReadToEnd();
p、 WaitForExit();
writegline(“输出”+输出);

Windows服务不适用于用户交互,因为它应该能够在没有任何用户登录的情况下运行

作为一种安全措施,Windows服务与用户的桌面隔离,这就是为什么与桌面的任何交互都注定会失败的原因


用常规桌面应用程序替换Windows服务,或者以不需要桌面访问的方式更改Windows服务。

IIS是典型的Windows服务,因此我写的关于IIS的大部分内容适用于您的情况。您将看不到任何浏览器/提示,因为它们在系统会话中弹出,并且与桌面隔离。由于Windows XP,您不允许这样做。要解决此问题,请不要将应用程序作为服务运行。在用户空间中运行它。这是一篇讨论可能的解决方法的好文章。我的建议是将你的东西作为后台应用程序运行。