Thx very much !! after knowing what i am looking for i found this: <DllImport("winspool.drv", CharSet:=CharSet.Auto, SetLastError:=True)> _ Private Shared Function OpenPrinter( _ ByVal pPrinterName As String, ByRef hPrinter As IntPtr, _ ByVal pDefault As IntPtr) As Boolean End Function <DllImport("winspool.drv", CharSet:=CharSet.Auto, _ SetLastError:=True)> _ Private Shared Function ClosePrinter( _ ByVal hPrinter As IntPtr) As Boolean End Function <DllImport("winspool.drv", CharSet:=CharSet.Auto, _ SetLastError:=True)> _ Private Shared Function GetPrinter( _ ByVal hPrinter As IntPtr, ByVal dwLevel As Integer, _ ByVal pPrinter As IntPtr, ByVal cbBuf As Integer, _ ByRef pcbNeeded As Integer) As Boolean End Function Private Shared Function GetPrinterInfo(ByVal printerName As String) As PRINTER_INFO_2 Dim hPrinter As IntPtr If Not OpenPrinter(printerName, hPrinter, IntPtr.Zero) Then Throw New Win32Exception(Marshal.GetLastWin32Error()) End If Dim pPrinterInfo As IntPtr = IntPtr.Zero Try Dim needed As Integer GetPrinter(hPrinter, 2, IntPtr.Zero, 0, needed) If needed <= 0 Then Throw New Exception("Na Zeavas...") End If pPrinterInfo = Marshal.AllocHGlobal(needed) Dim temp As Integer If Not GetPrinter(hPrinter, 2, pPrinterInfo, needed, temp) Then Throw New Win32Exception(Marshal.GetLastWin32Error()) End If Dim printerInfo As PRINTER_INFO_2 = _ CType(Marshal.PtrToStructure( _ pPrinterInfo, GetType(PRINTER_INFO_2)), PRINTER_INFO_2) Return printerInfo Finally ClosePrinter(hPrinter) Marshal.FreeHGlobal(pPrinterInfo) End Try End Function <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _ Public Structure PRINTER_INFO_2 Public pServerName As String Public pPrinterName As String Public pShareName As String Public pPortName As String Public pDriverName As String Public pComment As String Public pLoca