急!win2000中设置用ManagementObject.InvokeMethod("SetDefaultPrinter", null)报错

magicsnake 2007-01-03 04:02:21
我搜索了以前一些设置默认打印机的帖子,有如下代码
public static bool SetDefaultPrinter(string printerName)
{
bool setDefaulted = false;
ManagementObjectSearcher query;
ManagementObjectCollection querycollection;
string _classname = "select * from win32_printer";

query = new ManagementObjectSearcher(_classname);
querycollection = query.Get();

foreach (ManagementObject mo in querycollection)
{
if (string.Compare(mo["name"].ToString(), printerName, true) == 0)
{
mo.InvokeMethod("SetDefaultPrinter", null);
setDefaulted = true;
break;
}
}
return setDefaulted;
}
打印机是找到了,但是执行到
mo.InvokeMethod("SetDefaultPrinter", null);
这一句的时候总是报错: 没有任何类别中执行这个方法

希望高手帮解决,谢谢
PS: 开发版本是2005,系统是win2000个人版
...全文
385 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
magicsnake 2007-01-29
  • 打赏
  • 举报
回复
执行到
ManagementBaseObject outParams =
classInstance.InvokeMethod("SetDefaultPrinter", null, null);
发生同样的错误......
jinta2001 2007-01-29
  • 打赏
  • 举报
回复
using System;
using System.Management;
using System.Windows.Forms;

namespace WMISample
{
public class CallWMIMethod
{
public static void Main()
{
try
{
ManagementObject classInstance =
new ManagementObject("root\\CIMV2",
"Win32_Printer.DeviceID='替换成你找到的打印机名称'",
null);

// no method in-parameters to define


// Execute the method and obtain the return values.
ManagementBaseObject outParams =
classInstance.InvokeMethod("SetDefaultPrinter", null, null);

// List outParams
Console.WriteLine("Out parameters:");
Console.WriteLine("ReturnValue: " + outParams["ReturnValue"]);
}
catch(ManagementException err)
{
MessageBox.Show("An error occurred while trying to execute the WMI method: " + err.Message);
}
}
}
}
magicsnake 2007-01-29
  • 打赏
  • 举报
回复
哎,在我机器就有问题,在用户的机器(XP系统的)就没事,奇怪了
wshuangminlg 2007-01-04
  • 打赏
  • 举报
回复
帮LZ顶

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧