Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Problem mir Druckerfreigabe in VB Script

Frage Entwicklung VB for Applications

Mitglied: kinggunta

kinggunta (Level 2) - Jetzt verbinden

12.02.2007, aktualisiert 19:50 Uhr, 6170 Aufrufe, 3 Kommentare

Hallo Leute!

Unten angeführtes Script soll mir an einem Terminalserver zum Drucker ubenennen und Freigeben dienen.
Allerdings gibt dieses Script wenn ich es in einer Remotesitzung ausführe immer den Standarddrucker der Console und nicht des gerade angemeldeten Users frei. Was stimmt nicht?

on error resume next

Set shell = CreateObject("Shell.Application")
Set folder = shell.NameSpace(4)


Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set colInstalledPrinters = objWMIService.ExecQuery("Select * from Win32_Printer")


'Eventuell vorhandenen DOSPrinter Freigabe und LPT Verbindung löschen

Set WshNetwork = WScript.CreateObject("WScript.Network")
WshNetwork.RemovePrinterConnection "LPT1:",true,true


For Each objPrinter in colInstalledPrinters

If objPrinter.ShareName = "DOSprinter" Then

objPrinter.Shared = False
objPrinter.Put_

End If
Next


'Druckernamen ändern (Entfernen der Erweiterung "in Sitzung XX")

For Each item In folder.Items

If item.Name <> "Drucker hinzufügen" Then

arrPrinter = Split(item.Name, ")")

Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Printer where Name='" & item.Name & "'", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)



For Each objItem In colItems
call objItem.RenamePrinter(arrPrinter(0))

Next




'Freigabe des Standarddruckers als DOSprinter und zuweisung der LPT1 Schnittstelle

Set colInstalledPrinters = objWMIService.ExecQuery("Select * from Win32_Printer Where Default = True")



For Each objPrinter in colInstalledPrinters

objPrinter.Shared = TRUE
objPrinter.ShareName = "DOSprinter"
objPrinter.Put_


Set WshNetwork = WScript.CreateObject("WScript.Network")
WshNetwork.AddPrinterConnection "LPT1", "\\127.0.0.1\Dosprinter"

Next



End If

Next
Mitglied: AndreasHoster
12.02.2007 um 17:12 Uhr
Fehler sehe ich so auf Anhieb keinen, aber Windows ist halt im Grunde seines Herzens ein Single User System. Da hilft auch ein bischen Terminal Server Aufsatz nicht wirklich weiter. Will sagen, eventuell gibts immer nur die Infos des Consolenusers, würde mich nicht wundern.
Eventuell hilft es, wenn man beim Verbinden seine Rechte weitergibt (ist laut MS aber ein Sicherheitsrisiko):
Set objWMIService = GetObject("winmgmts:{impersonationLevel=Delegate}!\\.\root\CIMV2")
Bitte warten ..
Mitglied: kinggunta
12.02.2007 um 17:32 Uhr
Hab schon eine Lösung gefunden wie ich den Standardrucker des aktuellen users auslese
aber wie bau ich das jetzt in mein aktuelles script ein, damit er freigegeben wird?



Function StandardPrinter()
Set wshshell = CreateObject("Wscript.Shell")

key = "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\DEVICE"

StandardAlt = wshshell.RegRead(key)
StandardPrinter = StandardAlt
End Function
Bitte warten ..
Mitglied: bastla
12.02.2007 um 19:50 Uhr
Hallo kinggunta!

Mit einerl leichten Ergänzung Deiner Function würde ich es wie folgt versuchen:
01.
Function StandardPrinter() 
02.
Set wshshell = CreateObject("Wscript.Shell") 
03.
key = "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\DEVICE" 
04.
astrAlt = Split(wshshell.RegRead(key), ",") 
05.
StandardPrinter = astrAlt(0) 
06.
End Function
Auf Grundlage dieser Function könnte dann der entsprechende Programmteil oben etwa so aussehen:
01.
... 
02.
... 
03.
'Freigabe des Standarddruckers als DOSprinter und Zuweisung der LPT1 Schnittstelle 
04.
 
05.
strStandard = StandardPrinter() 
06.
 
07.
Set colInstalledPrinters = objWMIService.ExecQuery("Select * from Win32_Printer Where Name='" & strStandard & "'",,48) 
08.
 
09.
For Each objPrinter in colInstalledPrinters 
10.
	objPrinter.Shared = TRUE 
11.
	objPrinter.ShareName = "DOSprinter" 
12.
	objPrinter.Put_ 
13.
	Set WshNetwork = WScript.CreateObject("WScript.Network") 
14.
	WshNetwork.AddPrinterConnection "LPT1", "\\127.0.0.1\Dosprinter" 
15.
Next 
16.
... 
17.
...
Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Outlook & Mail
gelöst Email Anhänge speichern VB Script aber nur bestimmte Dateitypen (Outlook) (4)

Frage von LindeUnimog zum Thema Outlook & Mail ...

VB for Applications
gelöst VB Script rekursiv statt nur ein Ordner (4)

Frage von Saschaaaaa zum Thema VB for Applications ...

VB for Applications
gelöst VB Script nach gefundenem Wort die nächsten 4 Zeichen ersetzten (2)

Frage von deutsch73 zum Thema VB for Applications ...

Visual Studio
gelöst VB.Net - Problem mit Umleitung der Standard-Ausgabe (4)

Frage von emeriks zum Thema Visual Studio ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...