Jump to content

Drucker verbinden vb.net


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo @all.

 

Habe folgende lächerliche Zeile zusammen bekommen:

 

Sub Main()

 

 

' alle installierten Drucker ermitteln und

' in einer ComboBox zur Auswahl anzeigen

For Each sPrinter As String In PrinterSettings.InstalledPrinters

ComboBox1.Items.Add(sPrinter)

Next

 

End Sub

 

 

Ich würde ganz gerne Drucker als Anmeldescript in der AD verbinden. Vorab habe ich diese kleine Zeile "programmiert". Irgendwie kennt er die PrinterSettings nicht (wurde nicht deklariert).

 

Jemand eine Idee?

 

PS: ES muss vb.net sein

Link zu diesem Kommentar

Moin,

 

ein Anmeldeskript in VB.NET? Wer soll das denn wie ausführen? Was ist der Hintergrund dieser ... exotischen Anforderung? (Zumal wenn du offenbar keine besonderen VB-Kenntnisse hast.)

 

Mach es doch lieber so, wie es jeder macht und wie es funktioniert, z.B. hier beschrieben:

 

Drucker per Anmelde Script zuweisen

 

Gruß, Nils

Link zu diesem Kommentar

ok, als anmeldescript war etwas unglücklich ausgedrückt.

 

Die anderen Varianten kenne ich schon, nur sind diese nicht gerade praktikabel. Bei uns melden sich bspw. Azubis an unterschiedlichen Rechnern an, welche an logischerweise unterschiedlichen Orten stehen und dann mit unterschiedliche Drucker verbunden werden müssen. Und ich dachte mir dass ich die ganze Geschichte eleganter über vb.net hinbekomme - da ganz einfach objectorientiert.

Weiß nicht was daran so falsch sein soll - ich meine 10 Zeilen VB gegen 100 dos zeilen...

 

trotzdem erstmal danke

Link zu diesem Kommentar

Von falsch hast du gesprochen, nicht ich. Ein Anmeldeskript kann nun mal nicht in VB formuliert werden, daher meine Rückfrage. Dass es dir offenbar um was anderes geht, hast du ja erst hinterher gesagt.

 

Für das standortbezogene Verbinden von Druckern findest du auf gruppenrichtlinien.de auch eine Lösung. Wenn die nicht passt, solltest du vielleicht mal deine Anforderungen kundtun.

 

Oder falls es dir tatsächlich nur um dein Fragment ging: Irgendwoher muss VB ja wissen, was für ein Objekt "PrinterSettings" sein soll, oder? Dein Fragment definiert es ja nicht.

 

Gruß, Nils

Link zu diesem Kommentar

danke. das Import musste ich dennoch manuell machen :(. Foldenden Code habe ich nun zusammen:

 

Imports System.Drawing.Printing

Imports system.io

 

Module Module1

 

Sub Main()

 

Using file As StreamWriter = New StreamWriter("c:\drucker.txt")

For Each sPrinter As String In PrinterSettings.InstalledPrinters

file.Write(sPrinter & vbCrLf)

Next

End Using

 

End Sub

 

End Module

 

Damit liest er mir nun die installierten drucker aus. fein :). Step 2 wäre jetzt für mich Drucker zu verbinden, sprich aus AD Gruppen auszulesen und dem entsprechenden User zuzuweisen.

 

Da würde ich an sowas denken:

 

Dim net As Object

 

net = CreateObject("WScript.Network")

net.AddWindowsPrinterConnection("\\server\drucker")

 

ist das zum hinzufügen korrekt oder gibt es einen einfacheren weg?

Link zu diesem Kommentar

vielen dank cybquest. Habe nun nach viel Recherche noch dieses Schnippselchen gefunden und weiß aber so ganz ehrlich überhaupt nicht was ich damit anfangen soll :(. Was bedeuten die xml "Anweisungen"? Wieso Public shared Sub? Fragen über Fragen

 

 

Module Module1

''' <summary>

''' Adds a Network Printer to the computer

''' </summary>

''' <param name="printerName">Druckername</param>

''' <param name="networkPath">Netzwerkpfad</param>

''' <param name="useExistingDriver">Don't overwrite existing driver</param>

''' <param name="setDefaultPrinter">Set as the default printer</param>

''' <remarks></remarks>

 

 

Public Sub AddNetworkPrinter(ByRef printerName As String, ByRef networkPath As String, _

Optional ByRef useExistingDriver As Boolean = 0, Optional ByRef setDefaultPrinter As Boolean = 0)

 

Dim cmdToSend As String = "rundll32 printui.dll,PrintUIEntry /in /m " & Chr(34) & printerName & Chr(34) & " /f " & networkPath

If useExistingDriver Then cmdToSend += " /u" ' /u = use the existing printer driver if it's already installed

If setDefaultPrinter Then cmdToSend += " /y" ' /y = set printer as the default

Shell(cmdToSend, AppWinStyle.Hide) ' execute the command

 

 

' Example of how to use this subroutine:

AddNetworkPrinter("Printername", "\\server\printername", True, True)

End Sub

 

End Module

Link zu diesem Kommentar

"Von weitem" sag ich jetzt mal, die XML-Tags am Anfang sind hauptsächlich zur Erklärung der Aufrufparameter.

Public shared sub... les ich nirgends.

Public Sub, damit die Prozedur auch aus anderen Modulen aufgerufen werden kann.

Das eigentliche Druckermapping in diesem Code besteht auch nur aus einem CMD-Shell-Aufruf der rundll32.

Der "Example"-Teil am Ende gehört eigentlich nicht mehr in die Sub mit rein! Würde sich ja sonst endlos selbst aufrufen...

Link zu diesem Kommentar

also nochmal vielen Dank. Habe hier eine Menge Arbeit vor mir (vb.net). Hänge gerade an den Gruppenabfragen fest.

 

System.DirectoryServices.ActiveDirectory

 

Nur irgendwie beiß ich mir hier gerade die Zähne aus. Wollt "nur" Abfragen welche Gruppe welche User beinhaltet.

Mhh...

So, nun bin ich etwas weiter:

 

Sub Main()

 

 

Dim sPath As String = "LDAP://ou=computer,ou=xyz,dc=net-xy,dc=local"

Dim local As New DirectoryEntry(sPath)

Dim searcher As New DirectorySearcher(local)

Dim results As SearchResultCollection

Dim result As SearchResult

 

searcher.Filter = "(objectClass=group)"

results = searcher.FindAll()

 

For Each result In results

Dim name As ResultPropertyValueCollection = result.Properties( _

"name")

MsgBox("name")

 

Next result

 

 

End Sub

 

 

Leider bekomme ich bis jetzt kein ergebnis raus.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...