MAS 500 and Terminal services Printers

Hello, 

What I have:
Currently we have MAS500 7.3 installed on a terminal server farm. All of the accounting staff connect through RDP for access to the application. We have Terminal services Printer redirection enabled. Accounting staff members have anywhere from  2 to 6 printers installed on their local machine which become available to the terminal server session upon the user's login.  Users are located in multiple sites through our company network

The problem: 
When any employee uses any sort of print function in MAS500, the employee is able to see ALL printers attached to the server not just the printers listed in their printers. I've never seen any application capable of seeing other users printers. 

This creates three issues:
1 the employee is not able to choose the printers that only apply to them.
2 because the printer choices drop down is truncated, even if they remembered what printer they are supposed to use, they can't see the full name of the printers to make the right decision. 
3. When ever a print function is called (even print preview) it takes forever for that function to take place because it has to query all of the printers connected to the terminal server. (example Posting GL or journal entries with print preview) 

Does anyone else have this issue or something similar? Is Sage aware of this problem? Is it registered as a bug, and if it is, has it been fixed in later versions of Sage 500 ERP? Our vendor has been unable to provide a solution to the issue. 

I'd appreciate any input. 

Parents
  • 0

    I will say that we have experienced this problem as well and are still struggling with it. It appears to be a Microsoft bug, not a Sage bug.

    There is a hotfix available at the Microsoft site here: support.microsoft.com/.../2620656

    And there's also a cumulative rollup that fixes several printing issues in RDS 2008 R2 and Windows 7 here: support.microsoft.com/.../en-us

    Though they may work for you, neither of these fixes worked for us. The printers are still leaking between profiles and duplicating every time an RDS user gets assigned a different virtual port at log on. We've actually had to write a log off script that clears the registry keys in order to correct the issue. If the updates don't fix the problem for you, let me know and I'd be happy to share the bat file and vbs script that we've written to manually clean the keys.

Reply
  • 0

    I will say that we have experienced this problem as well and are still struggling with it. It appears to be a Microsoft bug, not a Sage bug.

    There is a hotfix available at the Microsoft site here: support.microsoft.com/.../2620656

    And there's also a cumulative rollup that fixes several printing issues in RDS 2008 R2 and Windows 7 here: support.microsoft.com/.../en-us

    Though they may work for you, neither of these fixes worked for us. The printers are still leaking between profiles and duplicating every time an RDS user gets assigned a different virtual port at log on. We've actually had to write a log off script that clears the registry keys in order to correct the issue. If the updates don't fix the problem for you, let me know and I'd be happy to share the bat file and vbs script that we've written to manually clean the keys.

Children
  • 0 in reply to mputty

    That would be great. I tried one from Microsoft but thus far it hasn't solved my issues of slowness.

  • 0 in reply to Levi Hunting

    Apologies for the late reply. I didn't track this thread. If you're still having trouble, this is what we're doing. Our Sage500 accounts are not set as Admin users. They're in the Power Users group on the RDS servers. I've highlighted the sections of the scripts you'll have to change. This has taken care of the issue for us. It's only cleaning up printers and printer ports where 'by 2x' or 'redirected' is found in the string. You can probably eliminate the 'by 2x' condition as it's our application publishing software. If you have any questions, let me know. I will definitely track the thread this time.

    BAT File

    echo ============================================================== >> \\<path to logs>\logfile.txt

    echo User %username% Logoff from %computername% at %time% on %date% >> \\<path to logs>\logfile.txt

    IF %computername% == <TS Hostname 1> GOTO RunScript

    IF %computername% == <TS Hostname 2> GOTO RunScript

    ECHO User is NOT on Terminal Server. Ending Script >> \\<path to logs>\logfile.txt

    GOTO End

    :RunScript

    ECHO User is on Terminal Server. Ready to Run Script >> \\<path to logs>\logfile.txt

    wscript \\<path to VB Script>\delprinter.vbs

    ECHO Done with Logoff for %username% >> \\<path to logs>\logfile.txt

    GOTO End

    :End

    echo ============================================================== >> \\<path to logs>\logfile.txt

    VBS Script the BAT calls (delprinter.vbs)

    on error resume next

    Const HKEY_CURRENT_USER = &H80000001

    Const ForAppend = 8

    intDeletedDevices = 0

    intDeletedPorts = 0

    intNoActionDevices = 0

    intNoActionPorts = 0

    'bDebugOn = True

    bDebugOn = False

    Set objFSO=CreateObject("Scripting.FileSystemObject")

    outFile="\\<path to logs>\logfile.txt"

    Set objFile = objFSO.OpenTextFile(outFile, ForAppend, True)

    if bDebugOn then

    objFile.Write "----------------------------------------------------" & vbCrLf

    objFile.Write "Starting Script" & vbCrLf

    end if

    strComputer = "."

    Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")

    strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion\Devices"

    oReg.EnumValues HKEY_CURRENT_USER, strKeyPath, arrDevices

    For Each device In arrDevices

    if (inStr(device," by 2X")) or (inStr(device," (redirected ")) then

    oReg.DeleteValue HKEY_CURRENT_USER,strKeyPath,device

    if bDebugOn then

    objFile.Write "Deleted DEVICE - " & device & vbCrLf

    end if

    intDeletedDevices = intDeletedDevices + 1

    else

    if bDebugOn then

    objFile.Write "No Action DEVICE - " & device & vbCrLf

    end if

    intNoActionDevices = intNoActionDevices + 1

    end if

    Next

    strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts"

    oReg.EnumValues HKEY_CURRENT_USER, strKeyPath, arrPrinterPorts

    For Each printerport In arrPrinterPorts

    if (inStr(printerport," by 2X")) or (inStr(printerport," (redirected ")) then

    oReg.DeleteValue HKEY_CURRENT_USER,strKeyPath,printerport

    if bDebugOn then

    objFile.Write "Deleted PRINTER PORT - " & printerport & vbCrLf

    end if

    intDeletedPorts = intDeletedPorts + 1

    else

    if bDebugOn then

    objFile.Write "No Action PRINTER PORT - " & printerport & vbCrLf

    end if

    intNoActionPorts = intNoActionPorts + 1

    end if

    Next

    strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion\Windows"

    strValueName = "Device"

    oReg.GetStringValue HKEY_CURRENT_USER, strKeyPath, strValueName, strDefaultPrinter

    if bDebugOn then

    objFile.Write "Ending Script" & vbCrLf

    end if

    objFile.Write "----------------------------------------------------" & vbCrLf

    objFile.Write "Default Printer is set to " & strDefaultPrinter & vbCrLf

    objFile.Write intDeletedDevices & " Devices Deleted - " & intNoActionDevices & " Devices Left Alone" & vbCrLf

    objFile.Write intDeletedPorts & " Ports Deleted - " & intNoActionPorts & " Ports Left Alone" & vbCrLf

    objFile.Write "----------------------------------------------------" & vbCrLf

    objFile.Close