Environment
Novell iPrint Client for Windows
Situation
In the past, iPrint User printers were not supported with Windows 8 and later platforms. User Printers are particularly useful with Terminal Services.
Resolution
NOTE: The information in this TID is obsolete with the iPrint client 6.16 and later. See TID 7018881 to learn how USER printers are enabled with the newer iPrint client with v3 or v4 drivers.
Note: This solution will not work with Version 4 drivers. In general, drivers which shipped with the Windows 8/10 OS are version 4 drivers. If a Version 4 driver is used with this solution, the printer will still print, but it will be installed as a Workstation printer and not a User printer.
Novell has created a workaround solution so that User Printers with non-Version 4 drivers can be used on Windows 8 and later machines (including Terminal Servers) regardless of what shows in the iprint.ini or Terminal Services tab of the iPrint Client.
- Create the UserPrinters.vbs script
- Show known file extensions.
- Go to the Control Panel ->Appearance and Personalization -> Folder Options -> click the View tab. Under Advanced settings clear the "Hide extensions for known file types" check box. Click OK.
- Highlight the entire script contents within the Additional Information section of this TID.
- Copy/paste into Notepad.
- Save the file as UserPrinters.vbs in the C:\NDPS directory.
- Run the script.
- Open a CMD prompt in "Run as Administrator" mode.
- Type the following:
- cd c:\ndps
- cscript UserPrinters.vbs --create
- Refresh the Desktop to see the folder "Printers".
- Install the iPrint printer using the /ipp page, iCM, iprntcmd, ZENworks, etc.
Notes:
- If you need to delete the “Printers†folder, run the following command
- cscript UserPrinters.vbs --delete
- The user can perform all the operations like changing printer settings, deleting printer, etc from the “Printers†folder. All the operations can be performed from the Printers folder. Printer’s folder will display only list of printers and no other devices.
Cause
Changes to Windows 8 and later have prevented the ability to create User printers in the way Novell has done in the past. This TID changes the way in which User printers are created.
Additional Information
Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject ("Scripting.FileSystemObject")
Set stdout = fso.GetStandardStream (1)
Set stderr = fso.GetStandardStream (2)
Dim iErrNumber : iErrNumber = 0
Dim sErrDescription, sMsgText, iErrorCode
On Error Resume Next 'in case exe fails
strErrorCode = WshShell.Run("fsutil dirty query %systemdrive%",0,True)
If strErrorCode = 0 Then
stdout.WriteLine ""
If Err.Number <> 0 Then
MsgBox"You must use the following convention for executing script" & vbNewLine & "cscript [Script Filepath] [option]", ,"Novell iPrint"
End If
Else
MsgBox"You must run the script as an administrator.", ,"Novell iPrint"
WScript.Quit 1
End If
If WScript.Arguments.length = 1 Then
sparam = WScript.Arguments.Item(0)
LCase(sparam)
const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{2227A280-3AEA-1069-A2DE-08002B30309D}"
strIprintPath = "SOFTWARE\Novell-iPrint\Settings"
strValueName = "EnableUserPrinterInstallationForWin8AndAbove"
If oReg.EnumKey(HKEY_LOCAL_MACHINE,strIprintPath,arrSubKeys) = 0 Then
if oReg.GetDWORDValue(HKEY_LOCAL_MACHINE,strIprintPath,strValueName,dwValue) = 0 then
else
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strIprintPath,strValueName,1
end if
Else
MsgBox"iPrint Client is not installed,please install client to proceed", ,"Novell iPrint"
WScript.Quit 1
End If
If StrComp(sparam ,"--create") = 0 Then
If oReg.EnumKey(HKEY_LOCAL_MACHINE,strKeyPath,arrSubKeys) = 0 Then
stdout.WriteLine " The shortcut ""Printers"" already exists on the Desktop."
Else
oReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath
stdout.WriteLine " A shortcut ""Printers"" is created on the desktop to display the list of printers. Refresh the desktop to view the shortcut"
End If
ElseIf StrComp(sparam ,"--delete") = 0 Then
If oReg.EnumKey(HKEY_LOCAL_MACHINE,strKeyPath,arrSubKeys) = 0 Then
oReg.DeleteKey HKEY_LOCAL_MACHINE,strKeyPath
stdout.WriteLine " The shortcut is successfully deleted."
Else
stdout.WriteLine " The shortcut is already deleted"
End If
If oReg.EnumKey(HKEY_LOCAL_MACHINE,strIprintPath,arrSubKeys) = 0 Then
if oReg.GetDWORDValue(HKEY_LOCAL_MACHINE,strIprintPath,strValueName,dwValue) = 0 then
oReg.DeleteValue HKEY_LOCAL_MACHINE,strIprintPath,strValueName
end if
End If
ElseIf StrComp(sparam ,"--help") = 0 Then
stdout.WriteLine " Usage : cscript [script Filepath] [option]"
stdout.WriteLine " --create : Creates the Printers folder on the desktop."
stdout.WriteLine " --delete : Deletes the Printers folder on the desktop."
Else
stdout.WriteLine " Usage : cscript [script Filepath] [option]"
stdout.WriteLine " --create : Creates the Printers folder on the desktop."
stdout.WriteLine " --delete : Deletes the Printers folder on the desktop."
stdout.WriteLine " --help : Displays the available options."
End If
Else
stdout.WriteLine " Usage : cscript [script Filepath] [option]"
stdout.WriteLine " --create : Creates the Printers folder on the desktop."
stdout.WriteLine " --delete : Deletes the Printers folder on the desktop."
stdout.WriteLine " --help : Displays the available options."
End If
Set fso = CreateObject ("Scripting.FileSystemObject")
Set stdout = fso.GetStandardStream (1)
Set stderr = fso.GetStandardStream (2)
Dim iErrNumber : iErrNumber = 0
Dim sErrDescription, sMsgText, iErrorCode
On Error Resume Next 'in case exe fails
strErrorCode = WshShell.Run("fsutil dirty query %systemdrive%",0,True)
If strErrorCode = 0 Then
stdout.WriteLine ""
If Err.Number <> 0 Then
MsgBox"You must use the following convention for executing script" & vbNewLine & "cscript [Script Filepath] [option]", ,"Novell iPrint"
End If
Else
MsgBox"You must run the script as an administrator.", ,"Novell iPrint"
WScript.Quit 1
End If
If WScript.Arguments.length = 1 Then
sparam = WScript.Arguments.Item(0)
LCase(sparam)
const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{2227A280-3AEA-1069-A2DE-08002B30309D}"
strIprintPath = "SOFTWARE\Novell-iPrint\Settings"
strValueName = "EnableUserPrinterInstallationForWin8AndAbove"
If oReg.EnumKey(HKEY_LOCAL_MACHINE,strIprintPath,arrSubKeys) = 0 Then
if oReg.GetDWORDValue(HKEY_LOCAL_MACHINE,strIprintPath,strValueName,dwValue) = 0 then
else
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strIprintPath,strValueName,1
end if
Else
MsgBox"iPrint Client is not installed,please install client to proceed", ,"Novell iPrint"
WScript.Quit 1
End If
If StrComp(sparam ,"--create") = 0 Then
If oReg.EnumKey(HKEY_LOCAL_MACHINE,strKeyPath,arrSubKeys) = 0 Then
stdout.WriteLine " The shortcut ""Printers"" already exists on the Desktop."
Else
oReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath
stdout.WriteLine " A shortcut ""Printers"" is created on the desktop to display the list of printers. Refresh the desktop to view the shortcut"
End If
ElseIf StrComp(sparam ,"--delete") = 0 Then
If oReg.EnumKey(HKEY_LOCAL_MACHINE,strKeyPath,arrSubKeys) = 0 Then
oReg.DeleteKey HKEY_LOCAL_MACHINE,strKeyPath
stdout.WriteLine " The shortcut is successfully deleted."
Else
stdout.WriteLine " The shortcut is already deleted"
End If
If oReg.EnumKey(HKEY_LOCAL_MACHINE,strIprintPath,arrSubKeys) = 0 Then
if oReg.GetDWORDValue(HKEY_LOCAL_MACHINE,strIprintPath,strValueName,dwValue) = 0 then
oReg.DeleteValue HKEY_LOCAL_MACHINE,strIprintPath,strValueName
end if
End If
ElseIf StrComp(sparam ,"--help") = 0 Then
stdout.WriteLine " Usage : cscript [script Filepath] [option]"
stdout.WriteLine " --create : Creates the Printers folder on the desktop."
stdout.WriteLine " --delete : Deletes the Printers folder on the desktop."
Else
stdout.WriteLine " Usage : cscript [script Filepath] [option]"
stdout.WriteLine " --create : Creates the Printers folder on the desktop."
stdout.WriteLine " --delete : Deletes the Printers folder on the desktop."
stdout.WriteLine " --help : Displays the available options."
End If
Else
stdout.WriteLine " Usage : cscript [script Filepath] [option]"
stdout.WriteLine " --create : Creates the Printers folder on the desktop."
stdout.WriteLine " --delete : Deletes the Printers folder on the desktop."
stdout.WriteLine " --help : Displays the available options."
End If