私は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ファイルを生成します。これがdegribhttp://www.nws.noaa.gov/mdl/degrib/index.php
の説明です。上記の関数fileName
には、gribファイルのパスがあります。上記の関数は、gribファイルがプログラムファイル以外のフォルダーに配置されている場合、gribファイルからcsvファイルを作成します。gribファイルをProgramFilesまたはProgramFilesの他のフォルダーに配置した場合、同じ関数はcsvファイルを生成しません。同じ関数がAppDataフォルダーでも機能しません。なぜこれが起こっているのですか?上記の問題の解決策を教えてください。