[英]Python starting subprocess as admin without calling process being admin
我試圖用python編寫一個包含以下部分的程序:
想法是,一旦安裝(使用cx_freeze)硬件監視器后,它就會一直在后台運行,當連接了一塊兼容的硬件(對於FTDI設備使用d2xx驅動程序)時,它會檢查注冊表,以查看其是否先前已配置,是否然后,它以序列號作為參數啟動后台進程,但是如果沒有,它將啟動config實用程序。
但是,硬件監視器需要從啟動時開始運行,因為它僅從注冊表中讀取並不需要完整的管理員權限,而后台進程僅需讀取,因此也不需要管理權限,但是config實用程序需要能夠寫入注冊表,因此需要管理員。
我的問題是這樣的:如何在python中以admin身份並使用參數調用另一個程序?
我考慮使用os.startfile,因為我已將凍結程序設置為需要管理員,但是我隨后無法將參數傳遞給它。
我也考慮過使用subprocess.Popen,但是我不知道如何將它提升到管理級別,即使可以,也無法將其提升到管理員級別,因此盡管它會打開程序並將無法寫入注冊表的參數傳遞給它。
任何幫助將不勝感激,有關進一步的信息,我的設置是:
謝謝
詹姆士
經過大量的尋找,我找到了解決方案,我嘗試使用:
最后是os.system
因為os.system本質上與在命令行上鍵入或將參數放入批處理文件中,然后執行它相同,這要求可執行文件具有默認權限,所以唯一的缺點是,當UAC窗口出現時,我會得到一個shell窗口出現,直到打開的程序關閉。
其他解決方案的問題是:
1-僅傳遞調用應用程序的權限,而不管被調用應用程序需要什么。
2-要求更高級別的權限,但沒有傳遞參數的機制
3-與1相同
4-與1相同
如果有人可以推薦一種防止外殼窗口的機制,將不勝感激。
詹姆士
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.