Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过python进行WMI调用的Windows模拟?_Python_Django_Wmi_Pywin32 - Fatal编程技术网

通过python进行WMI调用的Windows模拟?

通过python进行WMI调用的Windows模拟?,python,django,wmi,pywin32,Python,Django,Wmi,Pywin32,我正在使用PyWin32从django web应用程序用python对系统进行WMI调用。我的目标是允许用户通过web界面向系统添加打印机。为此,我使用win32print.AddPrinterConnection 这在我的用户帐户下运行开发服务器时效果很好。我可以添加我想要的所有打印机。但是,最终,这将需要在作为LocalSystem帐户运行的apache下运行 这是有问题的,原因有二: LocalSystem帐户根本没有网络权限,这是一台网络打印机。AddPrinterConnection

我正在使用PyWin32从django web应用程序用python对系统进行WMI调用。我的目标是允许用户通过web界面向系统添加打印机。为此,我使用win32print.AddPrinterConnection

这在我的用户帐户下运行开发服务器时效果很好。我可以添加我想要的所有打印机。但是,最终,这将需要在作为LocalSystem帐户运行的apache下运行

这是有问题的,原因有二:

  • LocalSystem帐户根本没有网络权限,这是一台网络打印机。AddPrinterConnection WMI调用最终生成一个COM调用,该调用将被禁止
  • LocalSystem帐户无法访问这些打印机所在的域。它们需要域帐户才能访问
  • 因此,我得出的结论是,我需要模拟域用户来完成此任务。我使用以下代码完成了此操作:

    这似乎是可行的,因为我能够验证我已经成功地模拟了调用代码。不幸的是,在模拟之后,我总是从win32print.AddPrinterConnection API调用中得到此错误:

    Exception Type: error 
    Exception Value: (2, 'AddPrinterConnection', 'The system cannot find the file specified.')
    
    你知道为什么会这样吗

    非常感谢!皮特

    更新

    在玩游戏时,我注意到如果我正在模拟的用户当前登录到系统中,AddPrinterConnection API调用将成功完成。一旦我注销该用户并在模拟该用户时重试该命令,就会出现上述错误


    这里发生了什么?

    我无法帮助解决具体问题,但我知道如果我必须在Windows上使用WMI,使用Python,我肯定会使用Tim Golden的模块而不是pywin32。也许在使用该模块的文档/食谱或谷歌搜索中,您可以找到解决方案