私はこれを試してみます: MessageQueue mq = new MessageQueue( "。\ Journal $"); mq.Purge();ワークグループインストールでMSMQシステムキュージャーナルをプログラムで削除する方法はありますか。
XPではうまく動作します。 しかし、Windows 2003サーバーでは、私はいつもこのエラーがあります。 "ワークグループインストールコンピュータはこの操作をサポートしていません。"
私はこれを試してみます: MessageQueue mq = new MessageQueue( "。\ Journal $"); mq.Purge();ワークグループインストールでMSMQシステムキュージャーナルをプログラムで削除する方法はありますか。
XPではうまく動作します。 しかし、Windows 2003サーバーでは、私はいつもこのエラーがあります。 "ワークグループインストールコンピュータはこの操作をサポートしていません。"
はそうのような形式の名前を使用してみてください:
MessageQueue mq = new MessageQueue("DIRECT=OS:computername\SYSTEM$;JOURNAL");
mq.Purge();
私はシステムキューがパスでアクセスすることはできないと思います。フォーマット名を使用する必要があります。
システムキューの正しい形式:
FormatName:Direct=os:.\\System$;JOURNAL
私は、Windows 7およびWindows 2003
をこの形式をテストしてみた(OSの後のドットは:/ localhostと意味ローカルコンピュータ)
var systemJournalQueue = new MessageQueue("FormatName:Direct=os:.\\System$;JOURNAL");
var systemDeadLetterQueue = new MessageQueue("FormatName:Direct=os:.\\System$;DEADLETTER");
var systemDeadXLetterQueue =new MessageQueue("FormatName:Direct=os:.\\System$;DEADXACT"));
systemJournalQueue.Purge();
またはN日間保存する場合あなたがこれを行うことができますメッセージ:
private static void PurgeQueues(int archiveAfterHowManyDays, MessageQueue queue)
{
queue.Formatter = new XmlMessageFormatter(new Type[] { typeof(System.String) });
queue.MessageReadPropertyFilter.ArrivedTime = true;
using (MessageEnumerator messageReader = queue.GetMessageEnumerator2())
{
while (messageReader.MoveNext())
{
Message m = messageReader.Current;
if (m.ArrivedTime.AddDays(archiveAfterHowManyDays) < DateTime.Now)
{
queue.ReceiveById(m.Id);
}
}
}
}
これは間違っている、コードが偶数(理由はバックスラッシュの)、コンパイルされません、正しい構文のための私の答えを参照してください(あなたのリンクは、しかし、私に適切な答えを与えていました) 。 –