【发布时间】:2011-11-18 18:21:13
【问题描述】:
我一直在编写打印机驱动程序安装程序。除此之外,它还可以创建一个以太网打印机,这意味着我需要创建一个以太网打印机端口。
我用来创建端口的代码(见下文)在 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,但所有这些都是针对本地计算机的。
【问题讨论】: