在windows上的進程,可以設置優先級,如下圖
那麼,如果我們在自動化測試過程中,需要設置進程的優先級,如何來做呢?
下面使用win32相關的接口實現此功能,代碼如下:
# 獲取用戶句柄
hToken = win32security.OpenProcessToken(win32api.GetCurrentProcess(), win32con.TOKEN_DUPLICATE | win32con.TOKEN_ADJUST_DEFAULT\
|win32con.TOKEN_QUERY | win32con.TOKEN_ASSIGN_PRIMARY)
hNewToken = hToken
authority = 0x0002000
if securityLevel != "":
authority = 0x0002000
if securityLevel.lower() == "low":
authority = 0x0001000
hNewToken = win32security.DuplicateTokenEx(hToken, win32security.SecurityImpersonation, 0, win32security.TokenPrimary, None)
# 構建相應級別的sid
sid = win32security.SID()
sid.Initialize((0, 0, 0, 0, 0, 16), 1)
sid.SetSubAuthority(0, authority)
# 將sid設置到用戶句柄
win32security.SetTokenInformation(hNewToken, win32security.TokenIntegrityLevel,(sid, win32security.SE_GROUP_INTEGRITY))
commandline = procPath + " " + param
# 啓動程序
si = win32process.STARTUPINFO()
win32process.CreateProcessAsUser(hNewToken, None, commandline, None, None, False, 0, None, None, si)
這樣,我們就可以使用不同優先級啓動了相應的進程~·~
轉載請註明:http://blog.csdn.net/sogouauto
探索測試奧義,交流測試技術,歡迎關注“搜狗測試”