Citrix サーバー (Server 2008 R2) でプリンターの名前を変更する C# アプリケーションを作成しました。
この理由は、ユーザーがログオンするたびにプリンターがサーバーに転送され、一意の名前 (セッション 3 の Microsoft XPS Document Writer (WI_UFivcBY4-wgoYOdlQ から) など) を取得するためです。プリンターはその名前を指しているため、セッションにログオンするたびにプリンター設定を変更する必要があります。
プログラム自体は魔法のように機能し、プリンターは私が望む名前を取得します。ただし、問題は、プリンターの名前が変更された後です。Windows はプリンターを識別できなくなっているようです。たとえば、デフォルトのプリンターを変更しようとすると、「エラー 0x00000709 プリンター名を再確認し、プリンターがネットワークに接続されていることを確認してください」というエラーが表示されます。
var query = new ManagementObjectSearcher("SELECT * FROM Win32_Printer where name like '%(%'");
ManagementObjectCollection result = query.Get();
foreach (ManagementObject printer in result)
{
string printerName = printer["name"].ToString();
if (printerName.IndexOf('(') > 0)
{
printer.InvokeMethod("RenamePrinter", new object[] { printerName.Substring(0, printerName.IndexOf('(')).Trim() + " " + userName }); //userName is provided as an inputparameter when running the application
}
}
何か不足していますか?改名時に他に何かする必要はありますか?この事件に関する情報はまったく見つからないようです。