2
我已经创建了一个C#应用程序来重命名Citrix服务器(Server 2008 R2)上的打印机。使用C#和WMI重命名打印机
原因是因为每次用户登录时,打印机都会被转发到服务器并获取唯一的名称(例如会话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
}
}
我错过了什么吗?重命名时还有什么我需要做的吗? 我似乎无法找到关于这种情况的任何信息。
您好感谢您的回答。我已经使用该页面供参考。我确实意识到这可能是一件麻烦事。不过,我已经在这个链接上找到了关于citrix和打印机的这个问题的一些interresting细节。我可能是搞乱它的权利[链接](http://www.norskale.com/articles/article/programmatically-rename-xenapp-autocreated-client-printers)再次感谢您的帖子。我会继续我的搜索解决方案,并在这里发帖,因为我发现它! – user2371138 2013-05-12 08:29:15
如[此处](http://www.scriptinternals.com/new/us/support/Internal/WMI_Win32_Printer.htm)所述,代码** 5 **,而不代码** 1 **,用于**拒绝访问** – 2014-12-18 10:19:36