我使用PyWin32从django web应用程序用python对系统进行WMI调用。我的目标是允许用户通过web界面向系统添加打印机。为此,我使用win32print.AddPrinterConnection. 在
在我的用户帐户下运行开发服务器非常有效。我可以添加我想要的所有打印机。但是,最终,这将需要在apache下运行,apache作为LocalSystem帐户运行。在
这有两个原因:LocalSystem帐户根本没有网络特权,这是一台网络打印机。AddPrinterConnection WMI调用最终会发出一个不允许的COM调用。在
LocalSystem帐户无法访问这些打印机所在的域。它们需要域帐户才能访问。在
因此,我得出的结论是,我需要模拟域用户来完成此任务。我用这里找到的代码做到了:
这似乎起作用了,因为我能够验证我是否成功地模拟了调用代码。不幸的是,在模拟之后,我总是从win32得到这个错误print.AddPrinterConnectionAPI调用:Exception Type: error
Exception Value: (2, 'AddPrinterConnection', 'The system cannot find the file specified.')
你知道为什么会这样吗?在
多谢了!皮特
更新
我发现,如果我模拟的用户当前登录到系统中,addprinterconnectionapi调用就成功完成了。一旦我注销该用户并在模拟该用户时重试该命令,就会得到上面所述的错误。在
这是怎么回事?在