.net

.net

 

Windows 下针对python脚本做一个简单的进程保护

前提:

  大家运行的脚本程序经常会碰到系统异常关闭、或被其他用户错杀的情况。这样就需要一个进程保护的工具。

  本文结合windows 的计划任务,实现一个简单的进程保护的功能。

  1. 利用py2exe生产 exe 文件.

    py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序.

    下载地址:从http://prdownloads.sourceforge.net/py2exe

            创建py2exehelper.py文件 具体代码如下:

__author__ = 'Bruce_Zhou'
from distutils.core import setup
import py2exe
setup(console=['uniquetest.py'],)
View Code

            创建 uniquetest.py 代码如下:

__author__ = 'Bruce_Zhou'

import threading
import time
import urllib2
import os


class CountDownTimer(threading.Thread):
        def __init__(self, seconds, action):
            self.runTime = seconds
            self.action = action
            super(CountDownTimer, self).__init__()

        def run(self):
            counter = self.runTime
            for sec in range(self.runTime):
                    print counter
                    time.sleep(1.0)
                    counter -= 1
            print " Time's up"
            self.action()


def dosomethine():
    print "I'm ready"
    t = CountDownTimer(1800, dosomethine)
    t.start()

if __name__ == "__main__":

    t = CountDownTimer(10, dosomethine)
    t.start()
View Code

           

       将py2exehelper.py 和uniquetest.py 放在同一目录。

       进入py2exehelper.py文件所在目录。

       执行命令: python py2exehelper.py py2exe。

       会在目录中创建两个文件夹”bulid” 和 “dist”。你可以在dist 目录中找到你需要的exe 文件。

   

     2.利用计划任务定时检测EXE是否运行。

          创建checkexe.py脚本用于检测进程是否存在,如果不存在则开启一个新的,如果存在则什么都不做。

          你可以设定计划任务每隔多长时间久去执行下这个脚本,这样就可以保证EXE始终保持运行。

      代码如下:

         

import wmi
import subprocess
import os
from win32com.client import Dispatch
c = wmi.WMI()

def checkexe():
    for process in c.Win32_Process():
       if process.Name == "uniquetest.exe":
           return True
    return False


if __name__ == "__main__":
    print checkexe()
    if not checkexe():
        subprocess.Popen([r'C:\Users\Bruce_Zhou\Desktop\2exe\dist\uniquetest.exe'])
View Code

         

   其中WMI模块获取Windows系统的硬件信息:硬盘分区、使用情况,内存大小,CPU型号,当前运行的进程,自启动程序及位置,系统的版本等信息。

     下载地址:https://pypi.python.org/pypi/WMI/

 

posted on 2015-08-06 16:48  严杰  阅读(980)  评论(0编辑  收藏  举报

导航