.net 如何在Vista下使用WIA1进行开发?

.net 如何在Vista下使用WIA1进行开发?,.net,windows-vista,windows-xp,wia,.net,Windows Vista,Windows Xp,Wia,我在Vista SP1下使用VS2008 SP1。我的.Net程序使用对WIA(Microsoft Windows Image Acquisition Library v2.0)的COM引用。我正在使用CommonDialogClass.ShowAcquireImage扫描文档,它工作正常。 我的一个客户正在运行XP。据我所知,在XP下,您必须使用WIALib(WIA1.0)。可以在Vista下使用WIA1进行开发吗?通常可以。但是,您仍然需要在Vista系统上安装WIA1 DLL。我过去的做法

我在Vista SP1下使用VS2008 SP1。我的.Net程序使用对WIA(Microsoft Windows Image Acquisition Library v2.0)的COM引用。我正在使用CommonDialogClass.ShowAcquireImage扫描文档,它工作正常。
我的一个客户正在运行XP。据我所知,在XP下,您必须使用WIALib(WIA1.0)。可以在Vista下使用WIA1进行开发吗?

通常可以。但是,您仍然需要在Vista系统上安装WIA1 DLL。我过去的做法是将WIA1 DLL从XP复制到XP盒。我不注册WIA1 DLL,只是引用它们。通过引用它们,您的代码现在使用WIA1。理论上,您仍然可以在Vista上运行和测试,因为WIA2应该与WIA1向后兼容。尽管您应该使用XP进行测试以确保安全


如果您没有其他计算机,我建议您查看一下VMWare,这样您就可以安装新的XP并获得dll。

我在Windows XP下使用VS2008设置了一个小型WIALib项目,并将创建的Interop.WIALib.dll复制到我的Vista计算机上。当我在C#项目中引用此文件时,我可以编译它。现在我有两个项目,一个用于XP,一个用于Vista。通过GetVersionEx调用,我可以确定我的C++程序中运行的Windows版本,并调用适当的Dll方法。

MS允许您下载适用于XP的WIA2.0库。这样,您的客户就可以按原样使用您的应用程序


另外,我更喜欢WIA2.0而不是1.0。

谢谢,我明天会测试这个。幸运的是,我可以安装一台带有XP的机器。老实说,我在Windows Server 2008上的Hyper-V下的VM中运行Vista…这些是我在XP中找到的dll:wiadefui.dll wiadss.dll wiascr.dll wiaservc.dll wiashext.dll wiavideo.dll wiavusd.dll它们似乎都不是“WIALib”的dll。有什么建议吗?我会在每个dll上使用“dumpbin.exe/exports wiadefui.dll”来查看哪一个导出了DllGetClassObject。这将表明DLL是COM DLL。遗憾的是,这不起作用。虽然有些DLL导出DllGetClassObject,但我无法引用它们。VS2008说,我必须检查它是否是有效的程序集或COM组件(我只有德语错误消息,所以我不知道“原始”错误消息)。我想我会在XP下安装一个VS。。。