string path = "D:";
string wbadminPath = Environment.SystemDirectory + @"\wbadmin";
string wbadminEvent = "start systemstatebackup -backupTarget:" + path + " -quiet";
try
{
int exitCode = 0;
ProcessStartInfo start = new ProcessStartInfo(wbadminPath, wbadminEvent);
using (Process proc = Process.Start(start))
{
proc.WaitForExit();
exitCode = proc.ExitCode;
}
}如果我在控制台应用程序中执行这段代码,-它可以工作。如果在Windows服务中执行此代码,则会出现以下错误:
Microsoft BLB备份命令行接口已停止工作
问题签名:问题事件名称: APPCRASH应用程序名称: wbadmin.exe应用程序版本: 6.0.6001.18000应用程序时间戳: 47918aed故障模块名称: kernel32.dll故障模块版本: 6.0.6002.18327故障模块时间戳: 4cb73436异常代码: c0000142异常偏移量: 00009f7d版本:6.0.6002.2.0.274.10地区ID: 1033附加信息1: 9d13附加信息2: 1abeeedb3fc11f11f11ad6ff0f6be8附加信息3: 9d13附加信息4: 1ab00edb3fc11f58ad6ff0f6be8
发布于 2015-12-30 20:05:28
好吧,我知道我要迟到了,但希望其他人也能从中受益。
Windows服务不能与任何与GUI交互或需要用户交互的东西交互。基本上,当您调用Process.Start(start)时,它尝试打开服务无法打开的CMD窗口。您可以使用以下内容:
start.UseShellExecute = false;
// Do not create the black window.
start.CreateNoWindow = true;//This stops the GUI然而,值得注意的是,我尝试了几个小时才使这个特定的命令正常工作,但无法做到。经过几个小时的工作和研究,我最终放弃了整个想法。通常,您可以使用.CreateNoWindow从服务中运行CMD命令,但是在这种情况下它似乎不起作用(它找不到WBADMIN进程)。如果我在这方面有什么新发现,我会更新的。
这里有条关于why services can't access GUIs的帖子
https://stackoverflow.com/questions/31983486
复制相似问题