We hebben een netwerk met een aantal Windows computers en een aantal printers en een Linux server. Nu hangt dit via Samba in een domein. Nu zijn die printers, netwerk printers, die allemaal JetDirect ondersteunen. Nu wil ik niet via Samba de printers installeren en dan op de werkstations, maar rechtstreeks. Dit wil ik doen, omdat ik nogal wat negatieve ervaringen heb, om het via Samba te laten lopen.
Nu wil ik dus die printers installeren via een login script. Dit is gewoon een .bat script. Als je op internet gaat zoeken, naar hoe je die printers installeert via CLI, kom je eigenlijk altijd tegen dat het via UNC paden gaat, dus via Samba. Deze printers ondersteunen dat zelf niet en ik wil het dus niet via de server laten lopen.
Wat moet er gebeuren om een printer te installeren:
• Drivers moeten worden geinstalleerd worden op de werkstation.
• De TCP/IP poort moet aangemaakt worden, om te weten waar de printer staat.
• Een printer moet aangemaakt worden en aan de goede TCP/IP poort gekoppeld worden.
Drivers installeren
Om de drivers te installeren heb ik het volgende gevonden:
Dit werkt wel mooi, alleen krijg hier nog een permission denied, terwijl het wel in een login script loopt, maar dit vogel ik nog wel uit. Het lijkt wel te werken om de printer drivers te installeren.
Een TCP/IP poort aanmaken
Om een TCP/IP poort aan te maken, heb ik dit eerst via de printer wizard gedaan en ondertussen het register in de gaten gehouden. Toen heb ik de goede gegevens uit het register gehaald en in een .reg bestand gezet. Deze kan succesvol in het register toegevoegd worden, via de volgende regel:
En dit is de inhoud van het .reg bestand:
Dit geeft de goede poort. Hierna moet ik wel even de printer spooler herstarten, zodat hij de nieuwe printerpoort herkent:
Dit werkt prima.
Printer toevoegen en koppelen aan poort
Nu komt het grote probleem. Ik krijg die printer niet via de CLI aan de poort gekoppeld. Ik heb al tools geprobeerd als con2prt en adprintx. Ook heb ik KIX geprobeer, maar AddPrinterConnection werkt alleen met UNC paden. Ook via WMI is het me nog niet gelukt. Uiteraard heb ik het ook via rundll geprobeerd, waarvan hier oa de 2 belangrijkste:
Deze commando's werken beide niet. Commando is niet goed volgens Windows of kan drivers niet vinden, of naam is niet goed. Zelfde commando geeft sommige verschillende output. En het is vies lastig om dit goed te debuggen. Uiteraard heb ik deze pagina er ook bij gehad: How to add printers with no user interaction in Windows
Het liefst doe ik dit zooitje allemaal in C# .NET. Aangezien ik uiteindelijk het login script in .NET wil ga bouwen, waar ik al een basis voor heb. Die commando's kan ik allemaal wel via .NET uitvoeren, dus als dat werkt, lukt dat ook wel. Maar het liefst via WMI achtige interface ofzo, of via .NET of Win32 API.
Heeft hier iemand wel een goede oplossing om die printers succesvol te installeren? Al is het C++, C#, VBS, KiX of batch, maakt me niet uit.
Hier ook nog een link, om printers te installeren via KiX (via IP ipv UNC paden): http://www.kixtart.org/fo...bb=showflat&Number=170281
Nu wil ik dus die printers installeren via een login script. Dit is gewoon een .bat script. Als je op internet gaat zoeken, naar hoe je die printers installeert via CLI, kom je eigenlijk altijd tegen dat het via UNC paden gaat, dus via Samba. Deze printers ondersteunen dat zelf niet en ik wil het dus niet via de server laten lopen.
Wat moet er gebeuren om een printer te installeren:
• Drivers moeten worden geinstalleerd worden op de werkstation.
• De TCP/IP poort moet aangemaakt worden, om te weten waar de printer staat.
• Een printer moet aangemaakt worden en aan de goede TCP/IP poort gekoppeld worden.
Drivers installeren
Om de drivers te installeren heb ik het volgende gevonden:
rem Driver installatie, zie http://www.msfn.org/board/index.php?showtopic=99066 rem en http://msdn2.microsoft.com/En-US/library/aa376957.aspx rundll32 setupapi,InstallHinfSection DL3110CN.PPD_I386 128 %DRIVERSPATH%\dell3110cn\dlps3bei.inf
Dit werkt wel mooi, alleen krijg hier nog een permission denied, terwijl het wel in een login script loopt, maar dit vogel ik nog wel uit. Het lijkt wel te werken om de printer drivers te installeren.
Een TCP/IP poort aanmaken
Om een TCP/IP poort aan te maken, heb ik dit eerst via de printer wizard gedaan en ondertussen het register in de gaten gehouden. Toen heb ik de goede gegevens uit het register gehaald en in een .reg bestand gezet. Deze kan succesvol in het register toegevoegd worden, via de volgende regel:
rem printer poorten toevoegen regedit /S %NETLOGONPATH%\printers.reg
En dit is de inhoud van het .reg bestand:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\IP_172.16.8.5] "Protocol"=dword:00000001 "Version"=dword:00000001 "HostName"="" "IPAddress"="172.16.8.5" "HWAddress"="" "PortNumber"=dword:0000238c "SNMP Community"="public" "SNMP Enabled"=dword:00000000 "SNMP Index"=dword:00000001 |
Dit geeft de goede poort. Hierna moet ik wel even de printer spooler herstarten, zodat hij de nieuwe printerpoort herkent:
rem Printer spooler herladen, om nieuwe poort te laden net stop "Print Spooler" net start "Print Spooler"
Dit werkt prima.
Printer toevoegen en koppelen aan poort
Nu komt het grote probleem. Ik krijg die printer niet via de CLI aan de poort gekoppeld. Ik heb al tools geprobeerd als con2prt en adprintx. Ook heb ik KIX geprobeer, maar AddPrinterConnection werkt alleen met UNC paden. Ook via WMI is het me nog niet gelukt. Uiteraard heb ik het ook via rundll geprobeerd, waarvan hier oa de 2 belangrijkste:
rem Voor commentaar: rundll32 printui.dll,PrintUIEntry /? rundll32 printui.dll,PrintUIEntry /z /r "IP_172.16.8.5" /Y /u /n "172.16.8.5" /q rundll32 printui.dll,PrintUIEntry /u /b "lokaal" /r "lokaal" /m "Dell 3110cn Lokaal" /n "172.16.8.5" /Z
Deze commando's werken beide niet. Commando is niet goed volgens Windows of kan drivers niet vinden, of naam is niet goed. Zelfde commando geeft sommige verschillende output. En het is vies lastig om dit goed te debuggen. Uiteraard heb ik deze pagina er ook bij gehad: How to add printers with no user interaction in Windows
Het liefst doe ik dit zooitje allemaal in C# .NET. Aangezien ik uiteindelijk het login script in .NET wil ga bouwen, waar ik al een basis voor heb. Die commando's kan ik allemaal wel via .NET uitvoeren, dus als dat werkt, lukt dat ook wel. Maar het liefst via WMI achtige interface ofzo, of via .NET of Win32 API.
Heeft hier iemand wel een goede oplossing om die printers succesvol te installeren? Al is het C++, C#, VBS, KiX of batch, maakt me niet uit.
Hier ook nog een link, om printers te installeren via KiX (via IP ipv UNC paden): http://www.kixtart.org/fo...bb=showflat&Number=170281
[ Voor 2% gewijzigd door eghie op 28-04-2008 14:42 . Reden: info wat geupdate ]