C# 在登录时设置终端服务器用户默认打印机

C# 在登录时设置终端服务器用户默认打印机,c#,cassia,C#,Cassia,我在我们的生产环境中管理一个终端服务器,该服务器为许多不同的机器提供服务,这些机器使用相同的通用ID进行连接。使用Cassia库,我可以轻松地以编程方式获取我需要了解的有关远程连接的所有信息,但到目前为止,我还不知道如何将打印机更改应用于该用户。我的区别标准是他/她连接的PC的名称。我对4台机器特别感兴趣,其余的将被忽略 简言之,我需要捕获这些特定PC何时登录,并为其剩余会话设置默认打印机 在本地级别,以编程方式更改默认打印机并不困难。我似乎正在努力从另一个实用程序服务器更改远程终端服务器上用户

我在我们的生产环境中管理一个终端服务器,该服务器为许多不同的机器提供服务,这些机器使用相同的通用ID进行连接。使用Cassia库,我可以轻松地以编程方式获取我需要了解的有关远程连接的所有信息,但到目前为止,我还不知道如何将打印机更改应用于该用户。我的区别标准是他/她连接的PC的名称。我对4台机器特别感兴趣,其余的将被忽略

简言之,我需要捕获这些特定PC何时登录,并为其剩余会话设置默认打印机


在本地级别,以编程方式更改默认打印机并不困难。我似乎正在努力从另一个实用程序服务器更改远程终端服务器上用户会话的默认打印机。

最简单的方法是创建一个设置为登录时运行的脚本,并通过WMI将打印机设置为

下面是一个简单的3行powershell脚本示例

$Printers = Get-WmiObject -Class Win32_Printer
$Printer = $Printers | Where{$_.Name -eq 'Name Of Printer To Use'}
$Printer.SetDefaultPrinter()
将其保存在.ps1文件中,并将终端服务器策略设置为在登录时运行脚本

如果您不想在脚本中使用固定名称,则可以轻松修改以查询其他外部源,只需将“要使用的打印机名称”替换为包含要连接的名称的变量即可


SetDefaultPrinter方法在Windows Vista/Server 2003及更高版本上受支持。

我不确定是否可以,我认为此更改需要通过登录时启动的启动脚本或后台程序在会话中进行。我理想的解决方案将作为登录时运行的控制台应用程序或服务运行。这将在什么操作系统上运行,这里有一些选项,但它们仅限于Windows 8+操作系统是Windows Server 2008 R2。这正是我在C端进行的实验,但我没有使用脚本做任何事情。我遇到的问题不是设置打印机,而是将设置打印机操作映射到登录到终端服务器的特定用户。这看起来很有希望,下周我会先尝试一下。