diff --git a/dislocker_client.py b/dislocker_client.py index 48ec257..faf41cd 100644 --- a/dislocker_client.py +++ b/dislocker_client.py @@ -16,6 +16,7 @@ import shutil import uuid import time import win32com.client +import pythoncom app_name = "Dislocker" dislocker_dir = os.path.dirname(os.path.abspath(sys.argv[0])) @@ -316,23 +317,29 @@ class Lock(customtkinter.CTkToplevel): self.signout_button.configure(state="normal", fg_color="#3c8dd0") def get_usb_devices(self): - str_computer = "." - obj_wmi_service = win32com.client.Dispatch("WbemScripting.SWbemLocator") - obj_swem_services = obj_wmi_service.ConnectServer(str_computer, "root\\cimv2") - col_items = obj_swem_services.ExecQuery("Select * from Win32_PnPEntity where PNPDeviceID like 'USB%'") + try: + pythoncom.CoInitialize() + str_computer = "." + obj_wmi_service = win32com.client.Dispatch("WbemScripting.SWbemLocator") + obj_swem_services = obj_wmi_service.ConnectServer(str_computer, "root\\cimv2") + col_items = obj_swem_services.ExecQuery("Select * from Win32_PnPEntity where PNPDeviceID like 'USB%'") - devices = [] - for obj_item in col_items: - devices.append({ - "device_id": obj_item.DeviceID, - "PNPDeviceID": obj_item.PNPDeviceID, - "Description": obj_item.Description, - "device_name": obj_item.Name, - "Manufacturer": obj_item.Manufacturer, - "Service": obj_item.Service - }) + devices = [] + for obj_item in col_items: + devices.append({ + "device_id": obj_item.DeviceID, + "PNPDeviceID": obj_item.PNPDeviceID, + "Description": obj_item.Description, + "device_name": obj_item.Name, + "Manufacturer": obj_item.Manufacturer, + "Service": obj_item.Service + }) - return devices + pythoncom.CoUninitialize() + return devices + except pythoncom.com_error as e: + print("Error:", e) + return [] def auth(self): self.button_disable()