在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
探索测试奥义,交流测试技术,欢迎关注“搜狗测试”
时间: 2024-10-04 01:27:43