我正在使用PyWin32从我的django Web应用程序中对python中的系统进行WMI调用。我的目标是允许用户通过Web界面向系统添加打印机。为此,我正在使用win32print.AddPrinterConnection。
这可以很好地在我的用户帐户下运行开发服务器。我可以添加我想要的所有打印机。但是,最终,这将需要在作为LocalSystem帐户运行的apache下运行。
这有两个原因:
因此,我得出的结论是,我需要冒充域用户来完成这项任务。我使用这里的代码完成了这个:
http://code.activestate.com/recipes/81402/
这似乎有效,因为我能够验证我已经成功模拟了调用代码。不幸的是,在模仿之后我总是从win32print.AddPrinterConnection API调用中得到这个错误:
Exception Type: error
Exception Value: (2, 'AddPrinterConnection', 'The system cannot find the file specified.')
你知道为什么会这样吗?
非常感谢!皮特
更新
如果我冒充的用户当前已登录系统,我注意到AddPrinterConnection API调用已成功完成。一旦我将该用户注销并在模拟该用户时重试该命令,我就会收到上述错误。
这里发生了什么?
答案 0 :(得分:0)
我无法解决具体问题,但我知道如果我必须在Windows上使用WMI工作,使用Python,我肯定会使用Tim Golden的Python WMI模块而不是pywin32。也许在使用该模块的文档/食谱或Google搜索中,您可以找到解决方案。