הפתרון הוא להשתמש בגירסת הunicode של הפונקציה.
[DllImport("winspool.Drv", EntryPoint = "OpenPrinterW",
SetLastError = true, CharSet = CharSet.Ansi,
ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool
OpenPrinter([MarshalAs(UnmanagedType.LPWStr)] string szPrinter,
out IntPtr hPrinter, IntPtr pDefault); //ref PRINTER_DEFAULTS pd);
(שינו לב לשינוי בין LPWStr ל LPStr)