Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import winreg
- import binascii
- from winreg import HKEY_LOCAL_MACHINE, ConnectRegistry
- from platform import node
- def show_help():
- print()
- print(" Uso: MonitorInfo [-l] [-r pcName] [-h]\n")
- print(" Opciones:\n")
- print(" -l Se obtiene la informacion de los monitores")
- print(" del PC que ejecuta el programa.\n\n")
- print(" -r pcName Se obtiene la informacion de los monitores")
- print(" del PC indicado (pcName).\n\n")
- print(" -h Se muestra esta ayuda.\n")
- def check_parameters():
- p = sys.argv[1:]
- sub_key = 'SYSTEM\CurrentControlSet\Enum\DISPLAY'
- # Si no hay parametros, se muestra la ayuda del comando
- if len(p) < 1:
- show_help()
- sys.exit()
- # Si existe un solo parametro
- elif len(p) == 1:
- if p[0] == "-l":
- print("\nObteniendo los datos de los monitores del PC actual...\n")
- try:
- key = winreg.OpenKey(HKEY_LOCAL_MACHINE, sub_key)
- tmp_k = winreg.OpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion")
- i = 0
- os_name = ""
- while True:
- if winreg.EnumValue(tmp_k, i)[0] == "ProductName":
- os_name = winreg.EnumValue(tmp_k, i)[1]
- break
- i += 1
- except OSError:
- print("Error al abrir el registro")
- sys.exit()
- return True, os_name, node(), key
- elif p[0] == "-r":
- print("\n [ERROR] Falta el nombre del PC")
- show_help()
- sys.exit()
- elif p[0] == "-h":
- show_help()
- sys.exit()
- else:
- print("\n [ERROR] Parametro desconocido")
- show_help()
- sys.exit()
- # Si existen mas de un parametro
- else:
- if p[0] == "-r":
- print("\nObteniendo los datos de los monitores del PC " + p[1] + "...\n")
- try:
- key = ConnectRegistry(r"\\" + p[1], HKEY_LOCAL_MACHINE)
- tmp_k = winreg.OpenKey(key, "SOFTWARE\Microsoft\Windows NT\CurrentVersion")
- i = 0
- os_name = ""
- while True:
- if winreg.EnumValue(tmp_k, i)[0] == "ProductName":
- os_name = winreg.EnumValue(tmp_k, i)[1]
- break
- i += 1
- key = winreg.OpenKey(key, sub_key)
- except FileNotFoundError:
- print("No se puede conectar al equipo", p[1])
- sys.exit()
- return True, os_name, p[1], key
- else:
- print("\n [ERROR] Parametro desconocido")
- show_help()
- sys.exit()
- if __name__ == '__main__':
- res, os_version, pc_name, k = check_parameters()
- if res:
- # Si el parametro es inexistente, o cumple con las especificaciones
- acer = ["AL1716", "V193W"]
- i = 0
- while True:
- try:
- with winreg.OpenKey(k, winreg.EnumKey(k, i)) as sk:
- j = 0
- while True:
- try:
- with winreg.OpenKey(sk, winreg.EnumKey(sk, j)) as ssk:
- l = 0
- while True:
- try:
- if winreg.EnumKey(ssk, l) == "Control" or os_version == "Windows 10 Pro":
- try:
- with winreg.OpenKey(ssk, "Device Parameters") as sssk:
- try:
- EDID = winreg.EnumValue(sssk, 0)[1]
- strEDID = str(EDID)
- modelo = strEDID[strEDID.index("\\x00\\x00\\x00\\xfc") + len("\\x00\\x00\\x00\\xfc\\x00"):].split("\\")[0]
- if modelo in acer:
- binEDID = binascii.hexlify(EDID)
- try:
- serie = "ET"
- tmpSerie = strEDID[strEDID.index("\\x00\\x00\\x00\\xff") + len("\\x00\\x00\\x00\\xff\\x00"):].split("\\")[0]
- serie += tmpSerie[:8]
- serie += str(binEDID)[32:34]
- serie += str(binEDID)[30:32]
- serie += str(binEDID)[28:30]
- serie += str(binEDID)[26:28]
- serie += tmpSerie[8:]
- serie = serie.upper()
- except:
- modelo = "Not Found"
- serie = "Not Found"
- else:
- serie = strEDID[strEDID.index("\\x00\\x00\\x00\\xff") + len("\\x00\\x00\\x00\\xff\\x00"):].split("\\")[0]
- except:
- modelo = "Not Found"
- serie = "Not Found"
- print (" Modelo:", modelo)
- print (" Serie:", serie, "\n")
- fo = open("InfoMonitor." + pc_name + ".txt", "a")
- fo.write(modelo + "\n")
- fo.write(serie + "\n\n")
- fo.close()
- except OSError:
- print ("Error")
- break
- else:
- l += 1
- except OSError:
- break
- j += 1
- except OSError:
- break
- i += 1
- except OSError:
- break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement