Application.Printers 远程桌面会话速度慢,为什么?

Application.Printers slow on a Remote Desktop Session, why?

我在许多 Microsoft Access 应用程序中都有代码,这些代码使用如下代码填充所有可用打印机名称的列表:

For Each ptr In Application.Printers
...

在本地 运行 应用程序时,使用此代码的程序 运行 非常快。

虽然 运行在远程桌面会话中运行同一个应用程序通常只需要几秒钟。

对于一个客户端,执行这一行代码需要 90 秒,但每个用户每天只执行一次,即使在远程桌面会话正确终止并重新启动后也是如此。几个小时后或第二天,我又遇到了这个问题。

服务器是 Windows Server 2008 R2 Datacenter, SP1
Microsoft Office 专业增强版 2010 14.0.7188.5002

我错过了什么?

如果您允许远程 RDP 会话在该列表中包含您的本地打印机,那么通过网络获取打印机列表会相当慢是理所当然的。

当您启动 RDP 客户端时,您可以禁用远程系统的此“功能”,该远程系统能够将本地打印机用于该远程服务器上的软件 运行。更糟糕的是,您的本地会话可能在您的网络上有多个打印机 - 因此整个过程可能需要相当长的时间 - 而且速度可能相当慢。

因此禁用您的本地打印机使用 - 该选项允许远程服务器与您的本地打印机通信并使用您的本地打印机 - 一个缓慢的过程。

我建议您在启动 RDP 客户端时取消选中此选项:

事实证明,远程桌面服务器上设置的错误或错误或某种不合作的打印机驱动程序是罪魁祸首。即使本地打印机关闭,也会出现 90 秒的延迟。删除服务器上错误的打印机设置解决了这个问题。使用本地打印机只会导致几秒钟的延迟。每个人都认为问题可能与本地打印机有关,因此将其关闭,然后排除了本地打印机的罪魁祸首,因此感谢大家的意见。