コマンド ライン経由での CD の書き込みをサポートする cdrtfe ( http://cdrtfe.sourceforge.net/にあります) というオープン ソース ソフトウェアがあります。cmd.exe を使用してコマンドを基本的な方法で実行すると、問題なく正しく書き込まれます。しかし、必要な引数の解析中に C# を使用してプロセスを作成すると、cdrtfe が正しく動作するかのように表示されますが、ディスクに空き容量がないと突然不平を言います。また、CD ライター ドライブが取り付けられていることさえ検出されないことにも気付きました。C#コードを介して呼び出すと、なぜそのように動作するのかわかりませんが、ここでフェンスにいます...これを回避できないようです。
必要なコマンドを使用してbatファイルを書き出し、 Process 呼び出しを使用してbatファイルを呼び出してみましたが、それでも同じエラーで失敗します。ただし、作成したものとまったく同じbatファイルを手動で実行すると、肯定的な結果が得られ、書き込みが開始されます。
誰かがこれに対する解決策を持っていますか?
ここに私が使用したコードの小さなスニペットがあります:-
String filesargument = "";
for (int i = 0; i < m_Files.Count; i++)
{
filesargument += string.Format("\"{0}\"", m_Files[i].FullName);
filesargument += " ";
}
string path = Path.Combine(
System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)
, @"cdrtfe");
var startInfo = new ProcessStartInfo();
Process burnProcess = new Process();
startInfo.Arguments = string.Format(@"/audio {0}/execute /exit /nosplash", filesargument);
startInfo.UseShellExecute = true;
startInfo.WorkingDirectory = path;
startInfo.FileName = @"cdrtfe.exe";
burnProcess.StartInfo = startInfo;
burnProcess.Start();
burnProcess.WaitForExit();
ありがとう
編集:詳細が不足していて申し訳ありません。これは、VS2010 で管理者権限で開発されている WPF アプリケーションです。私はまだデバッグ中なので、コードは同じアカウントで実行されます。
編集2:通常どおり実行するためだけに引数なしでexeを実行してみましたが、同様の結果が得られました。CD/DVD ドライブの検出を拒否しているだけです。