C# 调用AddPrinterDriver-winspool.drv时出现故障
我正在尝试使用c#创建一个虚拟打印机,带有winspool.drv中的一些绑定功能,我已成功地将打印机安装到windows 7 64位中,但每当我尝试在32位计算机上安装时,win32总是导致错误代码216 我决定借用我朋友的电脑,里面有10台32位处理器的电脑,只有一台可以安装打印机驱动程序 调用AddPrinterDriver方法时出错。这是我的代码:C# 调用AddPrinterDriver-winspool.drv时出现故障,c#,windows,driver,win32-process,C#,Windows,Driver,Win32 Process,我正在尝试使用c#创建一个虚拟打印机,带有winspool.drv中的一些绑定功能,我已成功地将打印机安装到windows 7 64位中,但每当我尝试在32位计算机上安装时,win32总是导致错误代码216 我决定借用我朋友的电脑,里面有10台32位处理器的电脑,只有一台可以安装打印机驱动程序 调用AddPrinterDriver方法时出错。这是我的代码: [DllImport("winspool.drv", EntryPoint = "AddPrinterDriver", CharSet =
[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;
}
结果总是失败,错误代码为216,即使我尝试了很多方法,如更改pEnvironment=null或Windows NT x86。然后以管理员权限运行,等等
更新:错误216的解释:此版本的%1与您正在运行的Windows版本不兼容。检查计算机的系统信息,然后与软件发行商联系。
->这意味着我可以在32位上运行64位程序。但是,我非常确定这个包是在VisualStudio2015的32位(x86)机器上构建的 根本原因是您的计算机中存在一个现有库,您正在尝试添加一个新库。 有两种选择:要么通过编码忽略此错误并继续正常安装应用程序,要么删除此目录中的所有内容:
C:\Windows\System32\spool\drivers\W32X86\3
你研究过错误216是什么意思吗?它告诉了你什么?为什么你没有在你的问题中包括实际的win32错误细节?C#打印机驱动程序的概念是一个非常模糊的概念。传统的错误是通过更改解决方案平台名称来选择最终DLL的所需风格。这对C#项目来说根本不起作用,重要的是抖动强制。项目>属性>构建选项卡。您好@HansPassant,谢谢您的回答。但是,我已经将目标平台从Build tab标记为x86,问题仍然存在。@ThiềuQuangCường您是否有在32位操作系统上运行它的解决方案,我也面临同样的问题,请分享