在Windows XP 64位上使用WMI添加以太网打印机端口时拒绝访问

时间:2011-11-18 18:21:14

标签: c# .net wmi

我一直在编写打印机驱动安装程序。除此之外,它还可以创建以太网打印机,这意味着我需要创建一个以太网打印机端口。

我用来创建端口的代码(见下文)适用于Windows XP 32位,Windows Vista 32& 64位和Windows 7 32& 64位。但是,当代码在Windows XP 64位上运行时,我会收到拒绝访问的异常。

这是C#代码,归结为一个产生错误的简单形式:

static void Main(string[] args)
{
    ManagementClass portClass = new ManagementClass("Win32_TCPIPPrinterPort");
    ManagementObject portObject = portClass.CreateInstance();

    portObject["Name"] = "TestPort";
    portObject["HostAddress"] = "172.16.2.78";
    portObject["PortNumber"] = 9100;
    portObject["Protocol"] = 1;
    portObject["SNMPEnabled"] = false;

    PutOptions options = new PutOptions();
    options.Type = PutType.UpdateOrCreate;
    try
    {
        portObject.Put(options);
    }
    catch (ManagementException e)
    {
        Console.WriteLine("ManagementException: " + e.Message);
    }
}

运行程序时,我以管理员身份登录,并且我也尝试右键单击并执行“运行方式”管理员,但它没有效果。我还有一个清单强制应用程序在Windows Vista / 7中以管理员身份运行;我不确定这会如何影响Windows XP 64位。

到目前为止,我在网上找到的大部分信息都涉及在远程计算机上使用WMI,但所有这些都是针对本地计算机的。

1 个答案:

答案 0 :(得分:0)

  

运行程序时,我以管理员身份登录,我也是   尝试右击并执行“运行方式”管理员,但事实并非如此   有效果。

在Windows Vista之前,未添加此上下文菜单项。你究竟是在Windows XP上做到这一点的?您是否尝试过调整manfest文件?

我希望我能真正提供答案,但您的问题是缺少重要细节和/或做出无意义的陈述(即“在Windows XP上以管理员身份运行”)。

来自以下问题:Addressing "Access Denied" Exception with WMI Calls

  

Add a manifest到您的程序,以便它始终与Admin一起运行   特权。 Here是另一个更重要的链接。