首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Windows服务中以编程方式运行命令提示符

无法在Windows服务中以编程方式运行命令提示符
EN

Stack Overflow用户
提问于 2015-06-04 19:21:56
回答 2查看 1.1K关注 0票数 0

我有以下代码,用于通过命令行以编程方式运行可执行文件:

代码语言:javascript
复制
var process = new Process();
var startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.WorkingDirectory = ConfigurationManager.BitCometDirectory;
startInfo.FileName = "cmd.exe";
var command = String.Format("/c bitcomet {0} -s --tray", path);
startInfo.Arguments = command;
process.StartInfo = startInfo;
var status = process.Start();

当我通过控制台应用程序测试这段代码时,它工作得很好。

但是,目标是将这些代码集成到Windows服务中。当我这样做并将VS调试器附加到正在运行的服务时,服务就会执行,而不会出现问题/错误。BitComet.exe和BitCometService.exe (不确定是什么)也出现在任务管理器中。该命令是打开一个torrent文件,不幸的是,由于下载从未开始,这种情况并没有发生。statustrue

当我最初设置Windows服务时,我必须创建一个安装程序,并将帐户(运行该服务的帐户类型)设置为LocalService,以便在安装时不必对该服务进行身份验证。我还测试了它的帐户设置为User与相同的结果。

有什么办法解决这个问题吗?

提前谢谢。

更新#1:我在代码中添加了process.StandardOutput.ReadToEnd();以记录错误,但这总是返回一个空字符串。但是,当我检查应用程序日志时,我会看到以下错误:

代码语言:javascript
复制
Faulting application name: UPNP.exe, version: 1.0.8.11, time stamp: 0x4a9638a4
Faulting module name: UPNP.exe, version: 1.0.8.11, time stamp: 0x4a9638a4
Exception code: 0xc0000005
Fault offset: 0x00013cbf
Faulting process id: 0xe088
Faulting application start time: 0x01d0a1ecc058cc01
Faulting application path: C:\Program Files\BitComet\tools\UPNP.exe
Faulting module path: C:\Program Files\BitComet\tools\UPNP.exe
Report Id: fe9f1270-0ddf-11e5-b482-10604b472e44

我不知道UPNP.exe是什么,但它似乎是由BitComet.exe调用的,这就是我的代码所调用的。知道怎么解决这个问题吗?我目前将服务设置为以我的用户身份登录(而不是本地系统或本地服务)。

更新#2

代码语言:javascript
复制
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="Application Error" /> 
  <EventID Qualifiers="0">1000</EventID> 
  <Level>2</Level> 
  <Task>100</Task> 
  <Keywords>0x80000000000000</Keywords> 
  <TimeCreated SystemTime="2015-06-08T14:13:24.000000000Z" /> 
  <EventRecordID>136152</EventRecordID> 
  <Channel>Application</Channel> 
  <Computer><<computer info>></Computer> 
  <Security /> 
  </System>
- <EventData>
  <Data>UPNP.exe</Data> 
  <Data>1.0.8.11</Data> 
  <Data>4a9638a4</Data> 
  <Data>UPNP.exe</Data> 
  <Data>1.0.8.11</Data> 
  <Data>4a9638a4</Data> 
  <Data>c0000005</Data> 
  <Data>00013cbf</Data> 
  <Data>1c5c</Data> 
  <Data>01d0a1f5482780b3</Data> 
  <Data>C:\Program Files\BitComet\tools\UPNP.exe</Data> 
  <Data>C:\Program Files\BitComet\tools\UPNP.exe</Data> 
  <Data>85d9245f-0de8-11e5-bb36-10604b472e44</Data> 
  </EventData>
  </Event>
EN

回答 2

Stack Overflow用户

发布于 2015-06-04 19:55:47

在黑暗中开枪,但也许这就是问题/解决办法:

代码语言:javascript
复制
var command = String.Format("/c {0}\\bitcomet  -s --tray", path);

这里的想法是将路径值放入由CMD触发的命令中。如果这不是“路径”点所在,这将无法解决问题。

票数 0
EN

Stack Overflow用户

发布于 2015-06-08 15:34:04

试图解决UPNP.exe错误已经变成了一个黑洞。虽然理想情况下,我会让我的所有洪流(手动和自动启动)在同一个应用程序,作为替代,我想我应该尝试连接到不同的洪流实用程序。我找到了aria2,这是一个命令行torrent客户端。几分钟之内,我就可以通过这个服务下载一条急流。

我不知道BitComet和它的UPNP.exe文件有什么问题,也不知道如何解决它,但这是我要使用的另一种方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30652355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档