【问题标题】:WMI printer.put() access deniedWMI 打印机.put() 访问被拒绝
【发布时间】: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。我将其添加为答案。

标签: c# printing


【解决方案1】:

尝试以管理员身份运行 Visual Studio。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 2017-02-08
    相关资源
    最近更新 更多