从共享应用程序打开命令提示符时遇到问题

时间:2011-07-25 13:59:03

标签: c#

我有一个已部署在Shared Server上的Windows应用程序。我的应用程序将调用命令提示符来执行一些数据库操作。如果我从共享位置运行应用程序,我将面临问题。如果我在部署的服务器中运行应用程序,我没有遇到任何问题。我遇到的问题如下。

我在调用时将一些参数传递给命令提示符。如果我从共享位置打开应用程序并且它没有执行任何我传递的参数,我会收到以下消息。

 CMD.EXE was started with the above path as the current directory. UNC
 paths are not supported.  Defaulting to Windows directory. Microsoft
 Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp.

命令提示符调用代码如下: 通常,命令参数将包含@"CD \&&C:&&CD\&&CD MyFolder &&CD MySubFolder\App.bat"

            ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd",  command.ToString());
            procStartInfo.RedirectStandardOutput = true;
            procStartInfo.UseShellExecute = false;
            procStartInfo.CreateNoWindow = true;
            Process proc = new Process();
            proc.StartInfo = procStartInfo;
            proc.Start();
            string result = proc.StandardOutput.ReadToEnd();
            return result;

如果我直接运行.bat文件,我也会遇到同样的问题。

3 个答案:

答案 0 :(得分:4)

答案就在你的问题中:

  

CMD.EXE以上述路径作为当前目录启动。的 UNC   路径不受支持。默认为Windows目录。微软   Windows XP [版本5.1.2600](C)版权所有1985-2001 Microsoft Corp.

http://compnetworking.about.com/od/windowsnetworking/g/unc-name.htm

摘要:unc路径是网络路径。你的cmd说不支持那些。

答案 1 :(得分:1)

您可以尝试使用pushd / popd命令让Windows将UNC路径映射到临时驱动器:

https://github.com/madskristensen/OpenCommandLine/issues/14#issuecomment-73608382

这应该适用于.bat方法,不确定是否必须执行.bat文件而不是cmd,或者是否可以管道。

答案 2 :(得分:0)

很难从您提供的信息中说出,但是您是否意识到当您从共享位置运行应用程序时,应用程序在本地客户端计算机上运行而不是在服务器计算机上运行。

因此,如果您运行的应用程序正在寻找服务器上的文件,那么如果没有相对于客户端计算机的路径,它将无法找到它。

如果您没有尝试打开文件或类似内容,请提供一些其他信息