PDFを画像に変換するプログラムがあります。プログラムを手動で実行している間、すべてが機能します。しかし、プログラムをスケジュールされたタスクとして実行しようとすると、ImageMagick または cmd (不明) が開始を拒否し、ステップをジャンプしてプログラムを停止させます。
別のユーザーで実行しようとしましたが(スケジュールされたタスクと特権を持つユーザーとしてプロセスを開始することの両方)、何も機能していないようで、次にどこから始めるべきかを理解していない、または知らないままです。
私の推測では、これはユーザー セキュリティに関係しており、C# のプロセス/コマンドから imagemagick を実行することは許可されていません。
コード:
string args = string.Format("/k convert -density 200 \"{0}\" -quality 40 \"{1}\\{2}\"", file.FullName, imageFolder, file.Name.Replace("pdf", "png"));
using (Process proc = new Process {
StartInfo = {
Arguments = args,
FileName = @"CMD.exe",
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardOutput = true,
RedirectStandardError = true
}
}) {
proc.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
proc.ErrorDataReceived += new DataReceivedEventHandler(p_ErrorDataReceived);
proc.Start();
proc.WaitForExit(5000);
proc.Kill();
}
static void p_OutputDataReceived(object sender, DataReceivedEventArgs e) {
using (StreamWriter sw = new StreamWriter(Program.BaseFolder + "\\log.txt")) {
sw.WriteLine(e.Data);
}
}
static void p_ErrorDataReceived(object sender, DataReceivedEventArgs e) {
using (StreamWriter sw = new StreamWriter(Program.BaseFolder + "\\log.txt")) {
sw.WriteLine(e.Data);
}
}