繁体   English   中英

使用Windows Service使用cmd文件将文件复制到网络路径

[英]Copy file to network path using Windows Service using cmd file

我正在尝试使用Windows服务中的C#代码将xml文件从本地文件夹复制到共享路径。

它正在调用CMD文件并返回Access Denied 但是,如果我尝试复制到本地,同样可以。

private void CopyFile(string path)
    {
        try
        {

            Process process = new Process();
            ProcessStartInfo startInfo = new ProcessStartInfo();                
            startInfo.UseShellExecute = false;
            startInfo.FileName = Path.Combine(Environment.CurrentDirectory, "Batch", "Run.cmd");
            startInfo.Arguments = "/c " + path;                               
            startInfo.RedirectStandardError = true;
            startInfo.RedirectStandardOutput = true;

            process = Process.Start(startInfo);
            process.WaitForExit();
            string output = process.StandardOutput.ReadToEnd();
            string error = process.StandardError.ReadToEnd(); // ACCESS DENIED
            int  exitCode = process.ExitCode; // 1


            process.Close();

        }
        catch (Exception ex)
        {
            string x = ex.Message;
        }
    }

运行.cmd

@set sourcePath=%1

copy /y %sourcePath%\MyTest.xml \\networksharedPath\XML\MyTest.xml

Windows服务的项目安装程序已配置为使用LocalSystem帐户。

如何使服务将文件从本地文件夹复制到共享计算机? C#代码或Windows Process Installer配置是否存在任何问题?

注意 :手动单击cmd文件将复制到共享文件夹。 如果我修改为“网络服务”并运行, Access is Denied出现相同的错误,“ Access is Denied 尝试了https://stackoverflow.com/a/11983513/1559213中提供的配置步骤,但是没有运气。

默认情况下,LocalSystem帐户通常无权访问网络共享。 尝试使用您的帐户运行该服务。 通过手动运行cmd文件,它确实在您的帐户下运行,而不在LocalSystem帐户下运行。 作为自己的进程运行时,它不会引发任何异常。 因此,您也可以在此处跟踪控制台输出。

暂无
暂无

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

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