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, 6183 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 ..
Ähnliche Inhalte
VB for Applications
gelöst VB-Script per Aufgabenplanung (2)

Frage von S4kar97 zum Thema VB for Applications ...

Visual Studio
gelöst VB: Batchprogramm: Resultat zurückgeben an VB Form (Textfeld) (7)

Frage von PixL86 zum Thema Visual Studio ...

VB for Applications
gelöst VB Skript für mehrere Batch Befehle (37)

Frage von freshman2017 zum Thema VB for Applications ...

Windows Server
C sharp oder Powershell oder VB? (3)

Frage von 1410640014 zum Thema Windows Server ...

Neue Wissensbeiträge
Linux Netzwerk

Ping und das einstellbare Bytepattern

(1)

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(3)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Microsoft Office
Office Druck fehler (18)

Frage von DaistwasimBusch zum Thema Microsoft Office ...

Windows Server
Zertifikat am DC erneuern funktioniert nicht (12)

Frage von takvorian zum Thema Windows Server ...

Festplatten, SSD, Raid
Uninitialisierte Festplatte - Daten retten (11)

Frage von peterla zum Thema Festplatten, SSD, Raid ...