我正在尝试获取所有可用打印机的列表,无论是本地安装还是网络打印机。要做到这一点,我使用了以下代码how to get network printers
我的实施
[HttpGet]
[Route("API/GetPrintersTest")]
public List<string> GetPrinters()
{
List<string> list = new List<string>();
// Use the ObjectQuery to get the list of configured printers
System.Management.ObjectQuery oquery =
new System.Management.ObjectQuery("SELECT * FROM Win32_Printer");
System.Management.ManagementObjectSearcher mosearcher =
new System.Management.ManagementObjectSearcher(oquery);
System.Management.ManagementObjectCollection moc = mosearcher.Get();
foreach (ManagementObject mo in moc)
{
System.Management.PropertyDataCollection pdc = mo.Properties;
foreach (System.Management.PropertyData pd in pdc)
{
if ((bool)mo["Network"] || (bool)mo["Local"])
{
if (pd.Name == "Name")
list.Add(pd.Name + ": " + mo[pd.Name]);
}
}
}
return list;
}
当我从visual studio调试WebAPI时,这非常正常,但是一旦我部署了我的webapi并请求相同的请求,我只能看到本地打印机,而不是网络打印机。
以下是从visual studio以调试模式运行WebAPI的结果。
名称:Microsoft XPS Document Writer
名称:Microsoft打印到PDF
名称:传真
名称:兄弟MFC-J825DW打印机
名称:兄弟HL-5450DN系列打印机
名称:\ sbs2011 \ RICOH_MAGABUR
以下是使用IIS运行已发布的WebAPI的结果。
名称:Microsoft XPS Document Writer
名称:Microsoft打印到PDF
名称:传真
名称:兄弟MFC-J825DW打印机
名称:兄弟HL-5450DN系列打印机
唯一的网络打印机是 \ sbs2011 \ RICOH_MAGABUR
如您所见,列表不同。 我能想到的唯一可能导致这种情况是缺乏对web api的权限。所以我试着用解决方案解决它,但无济于事。 IIS Application pool permissions for web api
这里有什么我想念的吗?我设置权限错误或是否有其他原因导致问题。
提前感谢您的时间和精力。