pfeffis 11 Geschrieben 21. Juli 2008 Melden Teilen Geschrieben 21. Juli 2008 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 Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 21. Juli 2008 Melden Teilen Geschrieben 21. Juli 2008 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 Zitieren Link zu diesem Kommentar
pfeffis 11 Geschrieben 21. Juli 2008 Autor Melden Teilen Geschrieben 21. Juli 2008 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 Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 21. Juli 2008 Melden Teilen Geschrieben 21. Juli 2008 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 Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 21. Juli 2008 Melden Teilen Geschrieben 21. Juli 2008 Evtl. oben drüber noch ein... Imports System.Drawing.Printing Mehr zur Printersettings-Klasse: PrinterSettings-Klasse (System.Drawing.Printing) (von irgendwo dort hast du auch den Beispielcode, stimmts ;) ) Zitieren Link zu diesem Kommentar
pfeffis 11 Geschrieben 21. Juli 2008 Autor Melden Teilen Geschrieben 21. Juli 2008 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? Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 21. Juli 2008 Melden Teilen Geschrieben 21. Juli 2008 Ich würde sagen, wenn schon VB, dann alles in VB ;) Z.B. in der Art: Declare Function AddPrinterConnection Lib "winspool.drv"_ Alias "AddPrinterConnectionA" (ByVal pName As String) As Long ... dummy = AddPrinterConnection("\\server\drucker") Zitieren Link zu diesem Kommentar
pfeffis 11 Geschrieben 21. Juli 2008 Autor Melden Teilen Geschrieben 21. Juli 2008 hey danke. mal ganz **** gefragt, wofür steht das "dummy"? Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 21. Juli 2008 Melden Teilen Geschrieben 21. Juli 2008 Wenn "AddPrinterConnection" als Funktion aufgerufen wird, brauchts ja ne Variable für den Rückgabewert. Für Rückgabewerte, die ich nur vorübergehend oder gar nicht auswerte, verwende ich ganz gerne ne "dummy"-Variable ;) Zitieren Link zu diesem Kommentar
pfeffis 11 Geschrieben 21. Juli 2008 Autor Melden Teilen Geschrieben 21. Juli 2008 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 Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 21. Juli 2008 Melden Teilen Geschrieben 21. Juli 2008 "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... Zitieren Link zu diesem Kommentar
pfeffis 11 Geschrieben 23. Juli 2008 Autor Melden Teilen Geschrieben 23. Juli 2008 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. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.