【发布时间】:2013-04-04 19:04:38
【问题描述】:
在我的工作中,我们为每个用户安装打印机。我正在尝试编写一个备份程序,该程序将列出所有给定用户名的联网打印机。那有可能吗?通过 WMI 或 System.IO 就可以了。这是列出所有机器联网打印机的代码,但不是每个用户的代码。
private void Button_Click(object sender, EventArgs e)
{
ConnectionOptions objConnection = new ConnectionOptions();
objConnection.Impersonation = ImpersonationLevel.Impersonate;
objConnection.EnablePrivileges = true;
string backupselectedcomputer = "Some Computer Name"
ManagementScope objScope = new ManagementScope("\\\\" + backupselectedcomputer +"\\root\\cimv2",objConnection);
objScope.Connect();
SelectQuery selectQuery = new SelectQuery();
selectQuery.QueryString = "Select * from win32_Printer Where Local = FALSE";
ManagementObjectSearcher MOS = new ManagementObjectSearcher(objScope, selectQuery);
ManagementObjectCollection MOC = MOS.Get();
foreach (ManagementObject mo in MOC)
{
//lbBackupprinters is a list box
lbBackupprinters.Items.Add(mo["Name"].ToString().ToUpper());
}
}
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
如果是按用户分配的,你肯定是在活动目录中添加了打印机,尝试在那里找到...
-
我们使用 VBS 脚本从打印服务器而不是 AD 将打印机添加到基于每个用户的计算机。看起来我将不得不通过注册表远程解析并找到用户 SID,然后通过 HKCU 或 HKUSERS 并从那里获取它