【发布时间】:2017-08-18 13:51:29
【问题描述】:
我正在尝试使用以下代码修改每台打印机的“保留打印的作业”属性:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Management;
namespace ConsolePrintpref
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Modify printer parameters");
ManagementScope scope = new ManagementScope("root\\CIMV2");
scope.Connect();
string searchQuery = "SELECT * FROM Win32_Printer";
ManagementObjectSearcher searchPrinters = new ManagementObjectSearcher(searchQuery);
ManagementObjectCollection printerCollection = searchPrinters.Get();
foreach (ManagementObject printer in printerCollection)
{
PropertyDataCollection printerProperties = printer.Properties;
foreach (PropertyData property in printerProperties)
{
if (property.Name == "KeepPrintedJobs")
{
printerProperties[property.Name].Value = true;
}
}
printer.Put(); //access denied
}
}
}
}
但它会引发错误: System.Management.dll 中出现“System.Management.ManagementException”类型的未处理异常附加信息:访问被拒绝
我是管理员账户,在 WMImgmt 中显示管理员有写权限。有什么我遗漏的地方吗?
【问题讨论】:
-
您是否以管理员身份运行了 Visual Studio?
-
哇,我想这应该是显而易见的。谢谢。
-
NP。我将其添加为答案。