如何解决如何在Windows服务中为当前用户获取默认打印机?
我正在使用Windows服务来获取和使用默认打印机。 直接从 visual studio 运行该服务或安装该服务并转到登录并输入当前用户凭据。
但是使用默认的登录设置(本地系统帐户)时。它获得了不同的打印机名称。
注意:
- 当前打印机是在Windows中手动设置的。
- 已为当前用户而非所有用户设置了已安装的服务。
如何使用默认的登录设置(本地系统帐户)为当前用户获取正确的默认打印机名称?
获取默认打印机的代码:
private string GetDefaultPrinterName() {
var printerSettings = new PrinterSettings();
var defaultPrinterName = printerSettings.PrinterName;
var isPrinterAvailable = PrinterSettings.InstalledPrinters.Cast<string>().Select(n => n.ToLower()).ToList().Contains(defaultPrinterName.ToLower());
if (isPrinterAvailable) return defaultPrinterName;
// get all available printers on network
var printerQuery = new ManagementObjectSearcher("SELECT * from Win32_Printer");
var printers = printerQuery.Get();
foreach (var printer in printers) {
var isDefault = (bool)printer.GetPropertyValue("Default");
if (isDefault) {// get default printer
return printer.GetPropertyValue("Name").ToString();
}
}
// in case no printer was selected,get default from printer settings.
return printerSettings.PrinterName;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。