【发布时间】:2014-01-08 04:23:54
【问题描述】:
这是我使用的示例代码:
System.Management.ManagementScope objMS =
new System.Management.ManagementScope(ManagementPath.DefaultPath);
objMS.Connect();
SelectQuery objQuery = new SelectQuery("SELECT * FROM Win32_Printer");
ManagementObjectSearcher objMOS = new ManagementObjectSearcher(objMS, objQuery);
System.Management.ManagementObjectCollection objMOC = objMOS.Get();
foreach (ManagementObject Printers in objMOC)
{
if (Convert.ToBoolean(Printers["Local"])) // LOCAL PRINTERS.
{
cmbLocalPrinters.Items.Add(new ListItem(Printers["Name"].ToString()));
}
if (Convert.ToBoolean(Printers["Network"])) // ALL NETWORK PRINTERS.
{
cmbNetworkPrinters.Items.Add(new ListItem(Printers["Name"].ToString()));
}
}
当我通过 Visual Studio IDE 运行我的应用程序时,我可以使用我的代码查看所有打印机(包括网络打印机)。但是当我在本地计算机上发布此应用程序(使用 Build--> Publish Websites)时(在我正在开发我的应用程序),我只获得安装在我的 PC 上的本地打印机(没有获得网络打印机)
【问题讨论】:
-
如果从 cmd 编译和运行程序会发生什么?是显示网络打印机还是本地打印机?
-
我没有尝试通过 cmd 运行我的程序。
-
试试看。如果从 cmd 运行后没有显示网络打印机,那么问题可能出在您的代码上。
-
我点击此链接forums.asp.net/t/1292376.aspx 在发布应用程序后,我在 web.config 文件中设置了模拟标签。
使用这个我可以使用网络打印机,但在 CrystalReportViewer 中看不到报告。 -
通过打印命令从水晶报表我可以打印。基本上水晶报表的打印命令打开一个弹出窗口并将所有内容转换为它。然后我可以保存pdf或打印它扔浏览器打印选项或 pdf 打印选项,所有本地和网络打印机都可用。为此,我不需要在发布后在 web.config 文件中添加模拟标签