繁体   English   中英

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

[英]C# System.Diagnostics.Process doesn't work properly

我在 Windows 服务应用程序中使用 System.Diagnostics.Process。 我调用的应用程序使用 DropBox API 和 Google Drive API。 当我登录 Google Drive 或 DropBox 时,它应该打开网络浏览器并允许访问 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+"\" " + argument;
//p.StartInfo.Verb = "runas";
// writeLogLine(argument + " " + execName);
p.Start();
output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
writeLogLine("out" + output);

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM