gpt4 book ai didi

c# - 当 WCF 服务运行批处理文件时,XCopy 或 MOVE 不起作用。为什么?

转载 作者:太空狗 更新时间:2023-10-29 18:31:44 25 4
gpt4 key购买 nike

我遇到过这样一种情况,即同一个批处理文件与命令行的工作方式不同,并且它是从 IIS 上托管的 WCF 服务触发的。区别在于 XCOPY 命令。当我正常运行批处理文件时,XCOPY 移动了我需要的所有数据

XCOPY "C:\from" "C:\to" /K /R /E /I /S /C /H /G /X /Y

但是当它从 WCF 服务运行时,不会复制任何内容。为了从我的服务运行批处理,我使用以下代码 Executing Batch File in C#蒙山一些小的修改。我的应用程序拉取在 LocalSystem 帐户下运行。我还尝试使用我自己的帐户进行应用程序投票 - 不起作用。怎么了?

简短更新:我最近了解到我的 WCF 服务在应用程序池用户下运行,但进程不是。为了进行实验,我更新了流程启动代码

var pwdArray = "mypassword".ToArray();
var pwd = new System.Security.SecureString();

Array.ForEach(pwdArray, pwd.AppendChar);
processInfo.UserName = "myuser";

processInfo.Password = pwd;
processInfo.Domain = "LocalMachine";

但这并没有帮助。在描述的条件下运行 XCOPY 似乎有一种神秘感。

还有一个更新:在常规windows服务下启动的进程中也发现了XCopy同样的问题。

最佳答案

感谢这篇文章 ( http://social.msdn.microsoft.com/Forums/vstudio/fr-FR/ab3c0cc7-83c2-4a86-9188-40588b7d1a52/processstart-of-xcopy-only-works-under-the-debugger?forum=netfxbcl ) 解决了我的问题所以实际上答案是:

This is a quirk of xcopy.exe. If you redirect the output, you have to redirect the input as well.

        var command = "XCOPY ...."
processInfo = new ProcessStartInfo("cmd.exe", "/c " + command);
processInfo.CreateNoWindow = true;
processInfo.UseShellExecute = true;
// *** Redirect the output ***
// unfortunately you cannot do it for X Copy

//processInfo.RedirectStandardError = true;
//processInfo.RedirectStandardOutput = true;


process = Process.Start(processInfo);
process.WaitForExit();

关于c# - 当 WCF 服务运行批处理文件时,XCopy 或 MOVE 不起作用。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21731783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com