2009-09-23 24 views
0

我使用PyWin32在python中從我的django web應用程序中對系統進行WMI調用。我的目標是允許用戶通過Web界面將打印機添加到系統中。爲此,我使用win32print.AddPrinterConnection。通過python進行WMI調用的Windows模擬?

這很好地運行我的用戶帳戶下的開發服務器。我可以添加我想要的所有打印機。但是,最終,這需要在作爲LocalSystem帳戶運行的apache下運行。

這是兩方面的原因存在問題:

  1. LocalSystem帳戶沒有網絡特權可言,這是網絡打印機。 AddPrinterConnection WMI調用最終會產生一個不允許的COM調用。
  2. 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調用成功完成,如果說我冒充用戶當前登錄到系統中。一旦我將該用戶登錄並在模擬該用戶的同時重試該命令,我會得到上述錯誤。

這是怎麼回事?

回答

0

我對特定問題無能爲力,但我確實知道,如果我必須在Windows上使用WMI工作,那麼我肯定會使用Tim Golden的Python WMI模塊而不是pywin32。也許在文檔/食譜或谷歌搜索使用該模塊,你可以找到一個解決方案。

相關問題