我一直在编写打印机驱动安装程序。除此之外,它还可以创建以太网打印机,这意味着我需要创建一个以太网打印机端口。
我用来创建端口的代码(见下文)适用于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,但所有这些都是针对本地计算机的。
答案 0 :(得分:0)
运行程序时,我以管理员身份登录,我也是 尝试右击并执行“运行方式”管理员,但事实并非如此 有效果。
在Windows Vista之前,未添加此上下文菜单项。你究竟是在Windows XP上做到这一点的?您是否尝试过调整manfest文件?
我希望我能真正提供答案,但您的问题是缺少重要细节和/或做出无意义的陈述(即“在Windows XP上以管理员身份运行”)。
来自以下问题:Addressing "Access Denied" Exception with WMI Calls
Add a manifest到您的程序,以便它始终与Admin一起运行 特权。 Here是另一个更重要的链接。