1.请确认你已经将所引用的控件安装到用户计算机上了,如果是com或者其他非.net组件必须转化,一般你只要将\bin下的dll复制到可执行程序目录下即可。
2.如果你所引用的控件需要驱动程序,请确认驱动程序是否正确安装.
3.出现这种异常,一般是因为在执行主程序前,实例化了某个类,比如以下程序:
SoftDog sd = new SoftDog();
void main()
{
Application.Run(new Form1());
}
由于在执行main函数前已经实例化了SoftDog,而此时计算机上并没有SoftDog这个组件,因此会出现无法得到句柄的错误.你可以改成:
void main()
{
try
{
SoftDog sd = new SoftDog();
Application.Run(new Form1());
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
来查看错误信息.
希望以上内容对你有所帮助!
}

解决方案 »

  1.   

    很可能你的那个组件需要外来的支持。比如,你使用DX9,就算你把所有的那些Micorosoft的dll全copy过去也是一点用都没有的,一样出错。你很可能就是这种情况。
      

  2.   

    是啊,这个组件是需要注册的,可是我该怎样才不需要到手工到客户端去注册呢?怎么把注册在安装过程中实现呢?to popcorn(米花): 安装肯定是有该组件的,关键是没有对它注册,不知道该如何把阿注册融合在安装里面
      

  3.   

    注册组件的话应该在制作安装程序的时候通过打包工具来完成,不知道你是怎么打包的,现在一些常见的工具应该都可以注册dll的
      

  4.   

    >我就是用vs自带的安装和部署程序作的呀,老是提示我说没有注册类别或者无法向注册表写入项在文件系统视图中添加你要安装的组件,选择该组件,在属性对话框中选择regester选择相应的选项即可注册该组件。希望以上内容对你有所帮助!