Control-Alt-Delete из python или командной строки

Я провел некоторое исследование, но я хотел бы иметь возможность вызвать control-alt-delete из python. Если это невозможно, можно вызвать его из командной строки, потому что тогда я мог бы просто использовать эту команду в python, потому что я могу вызывать командные строки в python. Если бы кто-то мог указать мне в правильном направлении, это было бы здорово. это для менеджера задач, написанного с помощью wxPython. edit: im пытается запустить защиту Windows и от ответа пользователя, который я попробовал

import win32com.client shell = win32com.client.Dispatch("WScript.Shell") shell.SendKeys("{CONTROL}{ALT}{DELETE}") 

и я получаю эту ошибку

 Traceback (most recent call last): File "C:/Python27/tescontrol.py", line 4, in <module> shell.SendKeys("{CONTROL}{ALT}{DELETE}") File "<COMObject WScript.Shell>", line 2, in SendKeys com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147024809), None) 

Вы, конечно, имеете в виду активировать окно Windows Security. В этом случае:

 import win32com.client shell = win32com.client.Dispatch("WScript.Shell") shell.SendKeys("^(%{DELETE})") 

ОБНОВИТЬ

Вышеприведенный код, похоже, не работает из-за причин, описанных в других сообщениях. В этом случае альтернативой является создание аналогичного окна и вызов из Python различных программ / функций, вызываемых реальным окном Windows Security.

При чтении комментариев OP к исходному вопросу конечная потребность OP заключается в изменении пароля пользователя. Это можно сделать с помощью:

 from win32com import adsi ads_obj = adsi.ADsGetObject("WinNT://localhost/%s,user" % username) ads_obj.SetPassword(password) 

Я просто тестировал это на своем ПК, так что это окончательная информация (хотя и не обязательно правильная , это зависит от OP :-)).

ОБНОВЛЕНИЕ 2: Копирование позже в виде отдельного ответа, поскольку комментарии, похоже, указывают на то, что весь ответ не работает. Это правильно для предложения SendKeys , которое не работает.

Если то, что вы хотите сделать, это выключить или перезагрузить систему, Windows имеет команду «shutdown», и у linux обычно есть команды «shutdown» и «reboot».

Проверьте следующий поток:

Согласно этому, VNC использует что-то вроде этого:

 PostMessage HWND_BROADCAST, WM_HOTKEY, 0, MakeLong(MOD_ALT Or MOD_CONTROL, VK_DELETE) 

Я подозреваю, что вам нужно будет использовать ctypes или PyWin32, чтобы сделать что-то вроде этого. Я бы, вероятно, пошел с ctypes, так как это кросс-платформенный, однако даже с ctypes вам, вероятно, потребуется написать специальный метод для каждой поддерживаемой ОС.

Насколько мне известно, Ctrl-Alt-Delete защищен по соображениям безопасности, поэтому программы не могут его использовать. (По крайней мере, в Windows 7 и ранее.)

При чтении комментариев OP его / ее первоначальная необходимость заключалась в изменении пароля пользователя. Фактически это можно сделать с помощью:

 from win32com import adsi ads_obj = adsi.ADsGetObject("WinNT://localhost/%s,user" % username) ads_obj.SetPassword(password) 

Вы можете использовать библиотеку vncdotool At:

Lib

И используйте vncdotool:

 os.system("vncdotool key ctrl-alt-del")