【发布时间】:2012-11-21 20:17:02
【问题描述】:
我正在开发 wpf 应用程序。我正在使用以下代码运行 degrib.exe
public static void GenerateCsvFile(string fileName)
{
try
{
MessageBox.Show("Csv Error");
MessageBox.Show("File Name : " + fileName);
MessageBox.Show("WorkingDirectory" + new FileInfo(fileName).DirectoryName);
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = @"C:\ndfd\degrib\bin\degrib.exe";
startInfo.Arguments = @"" + fileName + "" + " -C -msg 1 -Csv";
startInfo.UseShellExecute = true;
startInfo.WorkingDirectory = new FileInfo(fileName).DirectoryName;
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
process.Close();
System.Diagnostics.Process process1 = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo1 = new System.Diagnostics.ProcessStartInfo();
startInfo1.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo1.FileName = @"C:\ndfd\degrib\bin\degrib.exe";
startInfo1.Arguments = @"" + fileName + "" + " -C -msg all -nMet -Csv";
startInfo1.UseShellExecute = true;
startInfo1.WorkingDirectory = new FileInfo(fileName).DirectoryName;
process1.StartInfo = startInfo1;
process1.Start();
process1.WaitForExit();
process1.Close();
}
catch (Exception ex)
{
MessageBox.Show("Degrib Error");
Utility.ShowErrorMessage(ex);
}
}
degrib.exe 从 grib 文件生成 csv 文件。这里http://www.nws.noaa.gov/mdl/degrib/index.php是对degrib的解释。上面函数中fileName是grib文件的路径。如果 grib 文件放置在 Program Files 以外的任何文件夹中,则上述函数会从 grib 文件中创建 csv 文件。如果我将 grib 文件放在 Program Files 或 Program Files 中的任何其他文件夹中,相同的函数将不会生成 csv 文件。同样的功能也不适用于 AppData 文件夹。为什么会这样?能否请您针对上述问题提供任何解决方案?
【问题讨论】:
-
用户权限。以管理员身份运行进程。
-
你必须向写 degrib 的人询问这个问题...
-
@leppie:据我所知,AppData 即使没有管理员权限也必须工作。
-
您是否使用过procmon 等工具来确定进程是否已启动?
-
大多数程序都有一个参数可以让你设置输出路径,也许 grib 也有。在比 Vista 更新的 Windows 中,ProgramFiles 不是您应该更改或存储数据的地方(顺便说一句。早在 Vista 之前,MS 就建议不要使用此位置)
标签: c# exe system.diagnostics grib