我不以任何方式terminal服务专家,我需要帮助试图让一个应用程序在多用户和多打印机环境中工作。 每个用户都有自己的本地(USB)连接的打印机。 其中的每个人都以唯一的名字出现在ts会议上。 遗留应用程序只能configuration为打印到一台打印机。 对于用户来说,这个configuration是全局的,对于单个工作站来说是很好的,但对于所有用户来说,这个configuration看起来并不是一台机器。
问题是打印机为每个login用户都改变。应用程序需要打印不是给默认打印机,而是打印到应用程序中select的“特殊”打印机上…我们称之为标签打印机来简化说明。 你有你的默认普通打印机,方便应用程序find一个,然后你有一个特殊的打印机标签打印。 应用程序需要知道哪台打印机是标签打印机。 因此,我们允许用户在应用程序中select它,并将select存储在C:\ ProgramData \ mfgr \ prog \中的configuration文件中
我没有权限访问应用程序,所以我不能改变它的工作方式或configuration存储的位置。
在“常规”环境中,select使用的标签打印机驱动程序应该是每台机器,而不是每个用户。 当新用户login到机器时,物理打印机不会“噗”地突然出现新的打印机。 同一台打印机为所有用户。
然而在terminal服务中,物理机器与服务器上的虚拟机“合并”。 所以每个用户真正的机器(和真正的打印机)被注入“假”terminal服务机器。 打印机的名称对每个用户都是唯一的。 因此,打印机将“poof”并根据用户loginterminal服务更改名称。
因此,用户“A”login并设置应用程序打印到“LabelPrinterForUserA”(或打印机的名称恰好是),该设置存储在ProgramData子文件夹中,一切正常。 之后,用户“B”login,当他们打印时,应用程序试图打印到“LabelPrinterForUserA”,这对于用户B来说不存在。如果用户B重新configuration,则将其分解为用户A.
解决方法1:在我的想法中,应该/在工作的方式是在terminal服务中定义一个“通用”打印机…称之为“虚拟标签打印机”,当用户打印到打印作业时,直接返回到实际连接到本地工作站的物理打印机。 terminal服务器中有一个映射或设置,用于告知当作业进入虚拟打印机时,每个用户使用哪台打印机。 通知应用程序一次为所有用户打印“虚拟标签打印机”。
解决scheme2:或者…应该有一些方法使ProgramData子文件夹分开为每个用户。 例如,当用户“A”试图访问:C:\ ProgramData \ mfgr \ prog \设置文件时,它们实际得到的是C:\ UserData \ UserA \ AppData \ mfgr \ prog \设置文件,用户“B” UserB \ AppData \ mfgr \ prog \设置文件
所以我的问题是:这些解决scheme中的任何一个是否存在于terminal服务器的设置中? 还是有另一种解决这个问题的方法,我不知道?
更新
澄清,不只有一台打印机。 有多个打印机。 每个用户都有一个物理(我们称之为标签)打印机USB连接到他们的物理工作站。 我从pipe理员的理解是,当用户安装他们的打印机时,打印机的名称必须不同。 你是说每个用户都可以安装自己的打印机,并使用完全相同的名称?
在terminal服务器上使用旧软件,我可以感觉到你的痛苦…我所提出的解决scheme绝对不会扩展,因为它需要一些手动configuration,但是我已经使用这种方法来使用我们的标签打印机要求打印到一个LPT端口…是的,那么旧)。
将您的USB连接的打印机分享到每台机器上的networking。 然后,让用户login每个人的唯一会话(一个TS帐户不能在计算机之间共享,以便工作),并安装指向他们共享的USB的networking打印机。 尝试使用DNS名称来说明可能的DHCP移动。
之后,它应该工作。 每个用户都可以这样做,因为只要端口不同(它们是),显示名称就可以相同。
这听起来不像应用程序是在多用户环境中运行(通过在程序数据中存储configuration设置来certificate),我的build议是在terminal服务器上安装打印机,让用户select在本地安装在terminal服务服务器上的打印机。