【问题标题】:Control-Alt-Delete from python or command line从 python 或命令行中的 Control-Alt-Delete
【发布时间】:2013-08-13 16:26:17
【问题描述】:

我做了一些研究,但我希望能够从 python 调用 control-alt-delete。如果那不可能,是否可以从命令行调用它,因为我可以在 python 中使用该命令,因为我可以在 python 中调用命令行。如果有人能指出我正确的方向,那就太好了。这是一个用 wxPython 编写的任务管理器。 编辑: 我试图启动 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)

【问题讨论】:

  • 你到底想做什么?
  • 哪些操作系统?
  • 根据本文,就从 Python 访问命令而言,这是不可能的并且将被视为 Windows 错误。显然,ctrl+alt+del 是一组安全的击键,只能从操作系统响应:gossamer-threads.com/lists/python/python/940378,不确定命令提示符,基本的 Google 搜索没有提供任何有希望的结果。
  • blog.pythonlibrary.org/2010/10/03/… ... 可能会导致您的目标状态
  • 我的操作系统是 Windows,我正在尝试启动安全屏幕,因为我喜欢这些选项,而且我认为您不能从 python 更改用户密码,这是我会使用的一个功能,这就是我想要植入它

标签: python command-line wxpython


【解决方案1】:

您肯定是指激活 Windows 安全性窗口。在这种情况下:

import win32com.client

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

更新

由于其他帖子中描述的原因,上述代码似乎无法正常工作。在这种情况下,另一种方法是创建一个类似的窗口,并从 Python 调用真正的 Windows 安全窗口调用的不同程序/函数。

在阅读 OP 的原始问题的 cmets 时,OP 的最终需要是更改用户的密码。这可以通过以下方式完成:

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

我刚刚在我的电脑上测试了这个,最终信息也是如此(虽然不一定正确;这取决于 OP :-))。

更新 2:将后者作为单独的答案复制为 cmets 似乎表明所有答案都不起作用。这对于 SendKeys 命题是正确的,但它不起作用。

【讨论】:

  • 它不适用于在 bios/os 中专门处理的 alt-ctl-delete。
  • 在 Windows 8 上不起作用我用错误更新了问题
【解决方案2】:

如果您想要关闭或重新启动系统,Windows 有一个“关闭”命令,而 linux 通常有一个“关闭”和“重启”命令。

【讨论】:

  • afaik 这不是他想要的……但如果是的话,你也可以使用 win32api ……但这应该是真正的评论。
  • 我们不能对答案投反对票,因为它的作者未能正确猜测出一个措辞极其糟糕的问题。 +1(使其至少为 0)
【解决方案3】:

查看以下主题:

据此,VNC 使用这样的东西:

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

我怀疑你需要使用 ctypes 或 PyWin32 来做这样的事情。我可能会使用 ctypes,因为它是跨平台的,但是,即使使用 ctypes,您也​​可能需要为您支持的每个操作系统编写一个特殊的方法。

【讨论】:

  • 不,不是。您必须查看 VNC 的代码,然后将其移植到 Python。这看起来像我在 PyWin32 中看到的东西,但我知道你也可以使用 ctypes 来处理这类事情。
  • 我已经进入 python 两个月了,所以我不知道该怎么做
  • 使用谷歌——例如,我用谷歌搜索了 ctypes HWND_BROADCAST 并得到了这个链接:code.activestate.com/recipes/…
【解决方案4】:

在阅读 OP 的 cmets 时,他/她最初的需要是更改用户的密码。事实上,这可以通过:

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

【讨论】:

    【解决方案5】:

    你可以使用 vncdotool 库 在:

    lib

    并通过以下方式使用 vncdotool:

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

    【讨论】:

      【解决方案6】:

      这是您至少可以尝试的一种方法: (它可能只适用于 Windows 7)

      import sys
      import localize
      import os
      value_from = 0
      Integer = _clear_type_cache(get_object[win\%sys(vnc_value*cache)* value_from])
      
      def Interclass(event): 
          try:
            [<'ctrl'><'alt'><'del'>{%user_value(*object)*value_form}] % cache
          except: 
           {%TOPMOST%'TEMP'_%VALUE_REGISTRY}*
          else: 
          print("No value")
      

      【讨论】:

        【解决方案7】:

        据我所知,出于安全原因,Ctrl-Alt-Delete 受到保护,因此程序无法使用它。 (至少在 Windows 7 及之前版本中。)

        【讨论】:

        • 不能屏蔽但可以模拟
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-30
        • 2017-07-04
        • 2011-10-05
        相关资源
        最近更新 更多