Python 注册表句柄泄漏?

Python 注册表句柄泄漏?,python,windows,python-2.7,amazon-ec2,python-multithreading,Python,Windows,Python 2.7,Amazon Ec2,Python Multithreading,我们正在运行一个Python脚本(使用多线程)在基于Amazon-EC2的Windows Server 2008机器上进行一些工作。当机器启动时,我可以看到它开始执行Python脚本,然后我开始在事件日志中看到如下消息: Windows detected your registry file is still in use by other applications or services. The file will be unloaded now. The applications o

我们正在运行一个Python脚本(使用多线程)在基于Amazon-EC2的Windows Server 2008机器上进行一些工作。当机器启动时,我可以看到它开始执行Python脚本,然后我开始在事件日志中看到如下消息:

Windows detected your registry file is still in use by other applications or services. The    file will be unloaded now. The applications or services that hold your registry file may not function properly afterwards.  

DETAIL - 
19 user registry handles leaked from \Registry\User\S-1-5-21-2812493808-1934077838-3320662659-500_Classes:
Process 2872 (\Device\HarddiskVolume1\Python27\python.exe) has opened key \REGISTRY\USER\S-1-5-21-2812493808-1934077838-3320662659-500_CLASSES
Process 2844 (\Device\HarddiskVolume1\Python27\python.exe) has opened key \REGISTRY\USER\S-1-5-21-2812493808-1934077838-3320662659-500_CLASSES
Process 2408 (\Device\HarddiskVolume1\Python27\python.exe) has opened key \REGISTRY\USER\S-1-5-21-2812493808-1934077838-3320662659-500_CLASSES

这到底意味着什么?如何阻止Windows杀死某些线程?

可能是您的某些文件已损坏。请尝试以下操作:

执行SFC(系统文件检查器)扫描,查看是否有帮助

  • 按Windows键+X
  • 选择命令提示符(Admin)
  • 键入
    sfc/scannow
    并点击回车键
  • 同时执行
    chkdsk

  • 按Windows徽标+C以打开“魅力”栏
  • 现在单击设置,然后单击更多PC设置
  • 现在单击常规,然后单击高级启动下的立即重新启动
  • 现在单击“疑难解答”
  • 现在单击“高级选项”并选择“命令提示”
  • 键入
    chkdsk/r
    并按enter键
  • 最后但并非最不重要的一点是,如果上述操作不起作用,您可以执行启动修复:

  • 按Windows徽标+W以打开搜索框
  • 键入高级启动选项,然后按enter键
  • 然后单击“高级启动”下的“立即重新启动”
  • 现在单击“疑难解答”
  • 然后单击“高级选项”,然后单击“自动修复”

  • 希望有帮助。

    当计划任务配置为以特定用户身份运行时,该用户的帐户将以非交互方式登录以运行任务。任务完成后,将卸载用户的注册表配置单元。出于某种原因,这种情况正在过早发生

    根据您的描述,您有一个单独的计划任务,它启动各种子流程。父进程可能在子进程完成之前退出,这导致用户的注册表配置单元被卸载。您可以通过打开进程创建和终止的审核(在“高级审核策略配置”下的“组策略”中)或使用诸如process Monitor(可从MS网站获得)之类的工具来验证此理论

    假设这是原因,修复方法是父进程在自身退出之前等待子进程退出;或者,根据您的情况,父任务永远不退出可能是明智的


    如果您不能直接控制父进程和子进程之间的关系,则需要创建一个新的父进程来启动脚本,然后根据需要等待所有子进程完成或永久休眠。

    谢谢您的建议。我已经尝试了所有3个,但我仍然遇到同样的问题。他们中没有人提到任何关于正在进行的实际修复的内容。当您损坏了文件系统时,您可以做什么修复?你有注册表的备份吗?或者干脆创建一个新的AmazonEC2Windows2008实例,从头开始。这是我第二次遇到这种情况。第一次,我从零开始创建了一个新的映像…但我宁愿看看是否有实际原因,而不是不断创建新映像,因为我们正在使用创建AMI来启动更多的机器,继续重新安装我们需要的所有其他工具非常耗时。看起来您正在用户帐户的上下文中运行Python脚本,该用户帐户在完成之前已注销。如果父进程退出,则在Server2003上会出现这种情况,但根据文档,这种情况不应发生在2008年。脚本是如何启动的?我查找了SID(S-1-5-21-2812…),它对应于我的登录名。这些脚本是由计划任务启动的,该任务在系统启动后运行,无论我的用户帐户是否登录,都应该启动。我还授予我的帐户“作为批处理作业登录”用户权限。