我使用PyWin32在python中從我的django web應用程序中對系統進行WMI調用。我的目標是允許用戶通過Web界面將打印機添加到系統中。爲此,我使用win32print.AddPrinterConnection。通過python進行WMI調用的Windows模擬?
這很好地運行我的用戶帳戶下的開發服務器。我可以添加我想要的所有打印機。但是,最終,這需要在作爲LocalSystem帳戶運行的apache下運行。
這是兩方面的原因存在問題:
- LocalSystem帳戶沒有網絡特權可言,這是網絡打印機。 AddPrinterConnection WMI調用最終會產生一個不允許的COM調用。
- LocalSystem帳戶無權訪問這些打印機所在的域。他們需要一個域帳戶才能訪問。
因此,我得出結論,我需要冒充域用戶來完成這項任務。我做了這麼用這裏找到的代碼:
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調用成功完成,如果說我冒充用戶當前登錄到系統中。一旦我將該用戶登錄並在模擬該用戶的同時重試該命令,我會得到上述錯誤。
這是怎麼回事?