我正在尝试使用具有Winspool.drv中的某些绑定功能的c#创建虚拟打印机,我已经成功将打印机安装到Windows 7 64bits中,但是每当我尝试在Windows 7上安装时,win32总是会导致错误代码216 32位计算机。
我决定借用朋友的计算机,其中有10台32位处理器的计算机,只有一台可以安装打印机驱动程序。
当我调用AddPrinterDriver方法时发生了错误。这是我的代码:
[DllImport("winspool.drv", EntryPoint = "AddPrinterDriver", CharSet = CharSet.Auto, SetLastError = true)]
internal static extern bool AddPrinterDriver(String pName, int Level, ref DRIVER_INFO_6 pDriverInfo);
使用
进行调用的代码private bool InstallPrinterDriver(ref DRIVER_INFO_6 printerDriverInfo)
{
bool printerDriverInstalled = false;
printerDriverInstalled = NativeMethods.AddPrinterDriver(null, 6, ref printerDriverInfo);
if (printerDriverInstalled == false)
{
//int lastWinError = Marshal.GetLastWin32Error();
//throw new Win32Exception(Marshal.GetLastWin32Error(), "Could not add printer Zody PDF printer driver.");
logEventSource.TraceEvent(TraceEventType.Error,
(int)TraceEventType.Error,
"Could not add Zody PDF printer driver. " +
String.Format(WIN32ERROR, Marshal.GetLastWin32Error().ToString()));
Console.Write("\n" + String.Format(WIN32ERROR, Marshal.GetLastWin32Error().ToString()));
Console.Write("\n"+printerDriverInfo);
}
return printerDriverInstalled;
}
即使我尝试了很多方法,例如更改pEnvironment = null或Windows NT x86,结果总是失败,并显示错误代码216。然后以管理员权限运行,依此类推。
更新:错误216的解释:%1的此版本与您正在运行的Windows版本不兼容。检查计算机的系统信息,然后与软件发行商联系。 ->这意味着我可以在32位程序上运行64位程序。但是,我非常确定该程序包是基于Visual Studio 2015的32位(x86)计算机目标构建的。
答案 0 :(得分:0)
此问题的根本原因是您的计算机中有一个现有的库,并且您正在尝试添加一个新的库。 有两种选择,要么通过编码忽略此错误,然后继续正常安装应用程序,要么应该删除此目录中的所有内容:
C:\Windows\System32\spool\drivers\W32X86\3