2012-08-13 44 views
1

我一直试图设置一个简单的端点服务,它位于服务器上,接受Web请求,然后将作业打印到特定服务器上的特定打印队列一个用户,其凭据被传递到服务中。这是用于自动化测试,因此我们正在使用的用户具有有限的权限,因此安全性不是问题。从网络服务器列出打印队列时出错,模拟用户

当我尝试这个代码不带模拟:

PrintServer ps = new PrintServer(@"\\" + serverName, PrintSystemDesiredAccess.EnumerateServer); 
      response = "Created PrintServer object"; 
      foreach (PrintQueue pq in ps.GetPrintQueues()) 
      { 
       response = response + "[email protected]~" + pq.Name; 
      } 

它可以正常工作,给我的打印机的远程服务器上的目录,例如:
创建打印服务器对象〜@〜SC-4拉端口〜@〜微软XPS文档写入

当我与模拟尝试,我得到这个:
System.Printing.PrintServerException:创建打印服务器对象时发生异常。 Win32错误:打印机名称无效。
在System.Printing.PrintServer.Initialize(字符串路径,字符串[] propertiesFilter,PrinterDefaults printerDefaults)
在System.Printing.PrintServer..ctor(字符串路径,PrintSystemDesiredAccess desiredAccess)
在PrintService.PrintService.ImpersonatedInstalledPrinterList(字符串服务器名,字符串用户名,字符串用户密码,字符串域)

我一直无法弄清楚,或在网上找到,为什么它会抛出上述错误。我正在使用一个有效的域帐户,甚至给我正在使用的用户测试服务器上的打印队列的完整权限。当我尝试以模拟用户的身份进行打印时遇到同样的错误,而在未执行模拟操作时没有发送打印作业的问题。

感谢您可以提供任何帮助,

月之

回答

0

我发现我所用,问题是我是我是用模拟时使用的代码的问题,我用的SECURITY_IMPERSONATION_LEVEL当我需要使用授权时模仿。一旦我改变错误消失。