ユーザーの要求に基づいて中央ファイルを生成するアプリケーションがあります。ファイルが作成されたら、それでできるようにしたいのは、それらをそのユーザーの印刷キューに配置することです(この組織には中央の印刷キューがあるため、ユーザーは自分のドキュメントを印刷する責任があります)。ユーザーの準備ができたら印刷されます。
.netのアセンブリを使用するSystem.Printing
ことで、自分の印刷キューにジョブを追加できるので、その点では問題ありません。私の印刷コードは次のようになります。
private void RunPrintJob( string myFileName )
{
PrintServer ps = new PrintServer(@"\\printatron");
PrintQueue queue = new PrintQueue(ps, "psandqueues");
try
{
PrintSystemJobInfo pj = queue.AddJob(myFileName);
Stream myStream = pj.JobStream;
Byte[] myByteBuffer = GenerateBufferFromFile(myFileName); myStream.Write(myByteBuffer, 0, myByteBuffer.Length);
myStream.Close();
}
catch (Exception ed)
{
Debug.WriteLine(ed.Message);
if (ed.InnerException != null)
{
Debug.WriteLine(" -> " + ed.InnerException);
}
result = false;
}
queue.Commit();
}
これで、一元的に作成されたドキュメントがあり、どのユーザーがその作成を担当したかがわかり、それらをプリンターに送信できます。
私が今必要としているのは、それらを作成したユーザーをユーザーとして設定してプリンターに送信する方法です。印刷キューを介してこれを行う方法はありますか? プロパティから読み取り可能であることは知っていPrintSystemJobInfo.Submitter
ますが、それは読み取り専用です。そうでない場合は、なりすましによってそれを行う必要がありますか?もしそうなら、後者の場合、多数のユーザーパスワードを保存し、ユーザーがパスワードを変更するたびにソフトウェアが失敗するのを避けるためにできることはありますか? それは非常に不器用な操作方法のように思えますが、このアクティビティは現在インタラクティブに実行されていないため、他にどのようなオプションがありますか?