C#里 Process.Start失败:Win32Exception (0x80004005): 系统找不到指定的文件。

代码是正常的,但在Start时候回报错。

string pythonDir = @"‪C:\Python27\ArcGIS10.2\python.exe";
start.Arguments =@"E:\GDSTDDCGHY2\04数据处理服务\DataProcessService\build\Scripts\GPShell.py Copy_management D:\DataProcess\jobs\job_12262aa0-fde5-4e5d-a6c1-7bfb9db74418\XZDC_2016.sde\G2016XZDCCP2KQC2IPY#G2016XZDCCP2KQC2IPY D:\DataProcess\jobs\job_12262aa0-fde5-4e5d-a6c1-7bfb9db74418\result.sde";
start.UseShellExecute = false;
start.CreateNoWindow = true;
start.RedirectStandardOutput = true;
Process process = Process.Start(start);
//这一句会报错
报错信息 :系统找不到指定的文件。
   在 System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
   在 System.Diagnostics.Process.Start()
   在 System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
   在 SouthGIS.DataProcess.Worker.Runners.JobRunner.ExecuteInPython(String toolName, String paras, String toolBox, String year, String xzqdm, String toolAlias) 位置 E:\GDSTDDCGHY2\04数据处理服务\DataProcessService\SouthGIS.DataProcess.Worker\Runners\JobRunner.cs:行号 1184
   在 SouthGIS.DataProcess.Worker.Runners.JobRunner.copyFc(String sdeName, String fcName, String dataType, String xzqdm, String year, Boolean skipLog) 位置 E:\GDSTDDCGHY2\04数据处理服务\DataProcessService\SouthGIS.DataProcess.Worker\Runners\JobRunner.cs:行号 917

然后简单测试了Process.Start(),代码如下:


namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine($"按下任意键以开始...\r\n");
            Console.ReadLine();

            try
            {

                string pythonDir = @"‪C:\Users\think\Desktop\Shadowsocks.exe";   
                Process.Start(pythonDir);
            }
            catch (Exception e)
            {
                Console.WriteLine(e+"\r\n");        
            }
            Console.ReadKey();
        }
    }
}

如此简单的一个启动,却是报错了;

System.ComponentModel.Win32Exception (0x80004005): 系统找不到指定的文件。
   在 System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
   在 System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
   在 ConsoleApp2.Program.Main(String[] args) 位置 c:\users\think\source\repos\ConsoleApp2\ConsoleApp2\Program.cs:行号 28

尝试用File.Exist检测文件是否存在:
这里写图片描述
这个文件是存在的,返回的居然是false;

百思不得其解。

最后将C盘对应的路径拷贝到D盘下,确实可以访问,证实了是访问权限的问题。

string pythonDir = @"‪C:\Python27\ArcGIS10.2\python.exe";//@"C:\Python27\ArcGIS10.1\python.exe";
var d  = @"D:\Python27\ArcGIS10.2\python.exe";
var b = File.Exists(d);
//此处返回true

原来是因为Win10对C盘的读写限制级别很高,在相同的代码windowsServer和win7上可以跑,但是在win10里面需要对应的设置一下访问权限,或者使用Administrator登录Win10即可

猜你喜欢

转载自blog.csdn.net/loveyou388i/article/details/80347378
今日推荐