0

私は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フォルダーでも機能しません。なぜこれが起こっているのですか?上記の問題の解決策を教えてください。

4

1 に答える 1

0

デフォルトUACでは、昇格されたアクセスで起動されない限り、アプリケーションにプログラムファイルへの書き込み権限を付与するVistaWin7、付与しません。これを行うには、次を追加します。

startInfo.Verb = "runas";

degribただし、マニュアルを読んで、入力パラメータと出力パラメータを受け入れることに気づきました。したがって、あなたの場合、生成されたcsvファイルに事前定義された場所を使用することをお勧めします。 http://www.nws.noaa.gov/mdl/degrib/txtview.php?file=degrib.txt&dir=base

   -in [File]
     You can provide the file to read the GRIB message from either:
     1) right after "degrib",
     2) using the "-in [File]" option,
     3) on standard input.
   -out [File]
      Name of the file to store the results.  Must have 1 and only 1 dot in
      the name, and the extension must be 3 characters.  The extension will
      be replaced depending on file format.
   -namePath [Path]
      Name of a directory to put the files in.
      Only applicable if -out is NOT Specified.
于 2012-12-04T10:30:23.407 に答える