精华内容
下载资源
问答
  • 主要介绍了以windows service方式运行Python程序的方法,可实现将Python程序变成windows服务的功能,需要的朋友可以参考下
  • Windows Service的方式运行Python程序

    千次阅读 2012-08-02 17:12:33
    本文将介绍如何以Windows Service的方式运行Python程序,语句很简单,要用到Tim Golden编写的wmi.py 和 Mark Hammond的win32 extensions for Python ,两个缺一不可。importwmi importos c=wmi.WMI() watcher=c.Win...

    本文将介绍如何以Windows Service的方式运行Python程序,语句很简单,要用到Tim Golden编写的wmi.py 和 Mark Hammond的win32 extensions for Python ,两个缺一不可。


    1. importwmi  
    2. importos  
    3. c=wmi.WMI()  
    4. watcher=c.Win32_PowerManagementEvent.watch_for(EventType=7)#监视待机事件的语句;  
    5. whileTrue:  
    6. os.system("kdlj.vbs")#运行“连接宽带“的程序,这里还是用了上次那位仁兄的vbs代码;  
    7. watcher() 

    由于运行时Python程序的控制台窗口一直在那儿,看着有点碍事儿。于是乎想到要是能把他以windowsservice的方式运行,就像其他在windows服务管理器里的程序一样。

    最终,在"PythonProgrammingOnWin32"(byMarkHammond)这本书里找到了相关介绍,它里
    面有一个简单的模版,把Python程序代码放入相应位置就可以了:

     
    1. #SmallestService.py  
    2. #  
    3. #AsampledemonstratingthesmallestpossibleservicewritteninPython.  
    4.  
    5. importwin32serviceutil  
    6. importwin32service  
    7. importwin32event  
    8.  
    9. classSmallestPythonService(win32serviceutil.ServiceFramework):  
    10. _svc_name_="SmallestPythonService" 
    11. _svc_display_name_="ThesmallestpossiblePythonService" 
    12. def__init__(self,args):  
    13. win32serviceutil.ServiceFramework.__init__(self,args)  
    14. #Createaneventwhichwewillusetowaiton.  
    15. #The"servicestop"requestwillsetthisevent.  
    16. self.hWaitStop=win32event.CreateEvent(None,0,0,None)  
    17.  
    18. defSvcStop(self):  
    19. #Beforewedoanything,telltheSCMwearestartingthestopprocess.  
    20. self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)  
    21. #Andsetmyevent.  
    22. win32event.SetEvent(self.hWaitStop)  
    23.  
    24. defSvcDoRun(self):
    25. #把你的程序代码放到这里就OK了
      win32event.WaitForSingleObject(self.hWaitStop,win32event.INFINITE)

      if__name__=='__main__':
      win32serviceutil.HandleCommandLine(SmallestPythonService)
      #括号里的名字可以改成其他的,必须与class名字一致; 

    接下来,只要安装一下服务,cmd下运行:SmallestService.pyinstall就行了。

    这样,你就可以在windows服务管理器里找到一个名叫"ThesmallestpossiblePythonService"的服务了,设成自动启动,就会开机自动启动并且一直在后台运行了。(眼不见心不烦,)

    不过,这样虽然达到目的了,但还是发现个小问题,就是要是想停止该服务,关闭的进度条就愣在那里不动了,必须在进程管理器里把pythonservice.exe关掉才行,这个bug一直没法解决,就是关闭服务的同时,要把监视待机事件取消,否则退不出这个死循环。要是哪位高人看到了,希望可以指点一二。


    展开全文
  • 设置Derby做为windows service方式运行

    千次阅读 2014-05-05 20:02:21
    2. 网上有几种把derby做为windows service的方法,但经过测试,只有这种方式最好。其他方法多多少少都有点问题。这里介绍的方法需要借用tomcat windows包里的一个工具,可以使用下面的连接下载...

    原文链接:设置Derby做为windows service方式运行

    1. 首先下载完整的derby安装包,这里使用的是db-derby-10.10.1.1-bin。

    2. 网上有几种把derby做为windows service的方法,但经过测试,只有这种方式最好。其他方法多多少少都有点问题。这里介绍的方法需要借用tomcat windows包里的一个工具,可以使用下面的连接下载(https://dist.apache.org/repos/dist/release/tomcat/tomcat-8/v8.0.5/bin/apache-tomcat-8.0.5-windows-x64.zip)

    3. 解压db-derby-10.10.1.1-bin压缩包到db-derby-10.10.1.1-bin目录下。

    4. 在db-derby-10.10.1.1-bin目录下创建service\windows目录,用来存放设置windows service需要的文件。

    5. 复制apache-tomcat-8.0.5-windows-x64.zip压缩包里bin\tomcat8.exe文件到service\windows目录下。

    6. 在service\windows目录下创建下面上个文件

    service_config.bat用来定义derby做为windows service时的service名,监听的机器IP和端口

    @echo off
    
    set DERBY_SERVICE_NAME=DerbyService
    set DERBY_HOST=0.0.0.0
    set DERBY_PORT=1527

    create_service.bat用来创建service

    @echo off
    
    SET CUR_DIR=%CD%
    SET SERVICE_TOOL_DIR=%~dp0%
    SET LIB_DIR=%~dp0%..\..\lib
    SET LCP=%LIB_DIR%\derby.jar;%LIB_DIR%\derbynet.jar;%LIB_DIR%\derbyclient.jar;%LIB_DIR%\derbytools.jar;
    
    call %SERVICE_TOOL_DIR%service_config.bat
    %SERVICE_TOOL_DIR%tomcat8.exe //IS//%DERBY_SERVICE_NAME% --DisplayName=%DERBY_SERVICE_NAME% --Startup=auto --StartMode=jvm --StopMode=jvm --Classpath="%LCP%" --Jvm=auto --StartClass=org.apache.derby.drda.NetworkServerControl --StartParams="start;-h;%DERBY_HOST%;-p;%DERBY_PORT%;" --StopClass=org.apache.derby.drda.NetworkServerControl --StopParams="shutdown;-p;%DERBY_PORT%;"
    sc start %DERBY_SERVICE_NAME%

    delete_service.bat用来删除service

    @echo off
    
    call %SERVICE_TOOL_DIR%service_config.bat
    sc stop %DERBY_SERVICE_NAME%
    sc delete %DERBY_SERVICE_NAME%
    

    7. 测试
       运行create_service.bat来创建service
       运行delete_service.bat来删除service







    展开全文
  • C++安装、卸载、运行windows service

    千次阅读 2013-07-19 22:04:54
    按照自己的理解,重新实现了一下,代码如下: ...#define SERVICE_NAME TEXT("system2") SERVICE_STATUS g_status; SERVICE_STATUS_HANDLE g_ServiceStatusHandle; BOOL InstallService() { SC_HANDLE hS

    按照自己的理解,重新实现了一下,代码如下:


    #include <string.h>
    #include <stdio.h>
    #include <Windows.h>
    
    #define SERVICE_NAME TEXT("MyBeepService")
    
    SERVICE_STATUS g_status;
    SERVICE_STATUS_HANDLE g_ServiceStatusHandle;
    HANDLE g_stopEvent;
    
    BOOL InstallService() {
    	SC_HANDLE hSCManager;
    	SC_HANDLE hSCService;
    	hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
    	if (hSCManager == NULL) {
    		return FALSE;
    	}
    
    	TCHAR szModuleFileName[MAX_PATH];
    	GetModuleFileName(NULL, szModuleFileName, MAX_PATH);
    
    	hSCService = CreateService(hSCManager,
    		SERVICE_NAME,
    		SERVICE_NAME, 
    		SC_MANAGER_ALL_ACCESS, 
    		SERVICE_WIN32_OWN_PROCESS,
    		SERVICE_AUTO_START, 
    		SERVICE_ERROR_NORMAL,
    		szModuleFileName,
    		NULL,
    		NULL,
    		NULL,
    		NULL,
    		NULL);
    	if (hSCManager == NULL) {
    		return FALSE;
    	}
    
    	StartService(hSCService, NULL, NULL);
    	printf("Install Service Success!\n");
    
    	CloseServiceHandle(hSCService);
    	CloseServiceHandle(hSCManager);
    	
    	return TRUE;
    }
    
    BOOL UninstallService() {
    	SC_HANDLE hSCManager;
    	SC_HANDLE hSCService;
    	SERVICE_STATUS curStatus;
    	SERVICE_STATUS ctrlstatus;
    
    	hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
    	if (hSCManager == NULL) {
    		return FALSE;
    	}
    	hSCService = OpenService(hSCManager, SERVICE_NAME, SERVICE_ALL_ACCESS);
    	if (hSCService == NULL) {
    		return FALSE;
    	}
    	if (!QueryServiceStatus(hSCService, &curStatus)) {
    		return FALSE;
    	}
    
    	if (curStatus.dwCurrentState != SERVICE_STOPPED) {
    		if (!ControlService(hSCService, SERVICE_CONTROL_STOP, &ctrlstatus)) {
    			printf("Stop Service failed:%d!\n", GetLastError());
    			return FALSE;
    		}
    	}
    
    	if (DeleteService(hSCService)) {
    		printf("Uninstall Service Success!\n");
    	} else {
    		printf("Uninstall Service failed:%d!\n", GetLastError());
    	}
    
    	CloseServiceHandle(hSCService);
    	CloseServiceHandle(hSCManager);
    
    	printf("Uninstall Service Success!\n");
    
    	return TRUE;
    }
    
    VOID WINAPI ServiceHandler(DWORD fdwControl) {
    	switch (fdwControl) {
    	case SERVICE_CONTROL_PAUSE:
    		g_status.dwCurrentState = SERVICE_PAUSED;
    		break;
    	case SERVICE_CONTROL_CONTINUE:
    		g_status.dwCurrentState = SERVICE_RUNNING;
    		break;
    	case SERVICE_CONTROL_STOP:
    	case SERVICE_CONTROL_SHUTDOWN:
    		g_status.dwCurrentState = SERVICE_STOPPED;
    		SetEvent(g_stopEvent);
    		break;
    	default:
    		break;
    	}
    	SetServiceStatus(g_ServiceStatusHandle, &g_status);
    }
    
    VOID WINAPI ServiceMain(DWORD dwArgc, LPTSTR *lpszArgv) {
    	g_status.dwCurrentState = SERVICE_STOPPED;
    	g_status.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_PAUSE_CONTINUE;
    	g_status.dwWin32ExitCode = 0;
    	g_status.dwCheckPoint = 0;
    	g_status.dwWaitHint = 0;
    	g_status.dwServiceSpecificExitCode = 0;
    	g_status.dwServiceType = SERVICE_WIN32;
    
    	g_ServiceStatusHandle = RegisterServiceCtrlHandler(SERVICE_NAME,
    			ServiceHandler);
    	if (g_ServiceStatusHandle == 0) {
    		return;
    	}
    
    	g_status.dwCurrentState = SERVICE_START_PENDING;
    	SetServiceStatus(g_ServiceStatusHandle, &g_status);
    
    	g_stopEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
    
    	g_status.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
    	g_status.dwCurrentState = SERVICE_RUNNING;
    	SetServiceStatus(g_ServiceStatusHandle, &g_status);
    
    	do {
    		Beep(1000, 100);
    	} while (WaitForSingleObject(g_stopEvent, 5000) == WAIT_TIMEOUT);
    
    	g_status.dwCurrentState = SERVICE_STOP_PENDING;
    	SetServiceStatus(g_ServiceStatusHandle, &g_status);
    
    	CloseHandle(g_stopEvent);
    
    	g_status.dwCurrentState = SERVICE_STOPPED;
    	g_status.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_PAUSE_CONTINUE;
    	SetServiceStatus(g_ServiceStatusHandle, &g_status);
    }
    
    void RunService() {
    	SERVICE_TABLE_ENTRY dispatchTable[] = { { SERVICE_NAME, ServiceMain }, {
    	NULL, NULL }, };
    	StartServiceCtrlDispatcher(dispatchTable);
    }
    
    int main(int argc, char* argv[]) {
    	if (argc == 1) {
    		RunService();
    	} else {
    		if (strcmp(argv[1], "install") == 0) {
    			InstallService();
    		} else if (strcmp(argv[1], "uninstall") == 0) {
    			UninstallService();
    		}
    	}
    
    	return 0;
    }
    



    知道程序的流程就能编写出来了,否则就会报1053的错误。

    一开始报1053,是因为ServiceMain没写对,没有CreateEvent、WaitForSingleObject、循环。


    要注意的地方有:

    1、安装好服务后,是需要手动启动还是会自动启动?

    2、关机时会停止服务吗?

    3、开机后,服务是否会自动运行?


    展开全文
  • REST端点,用于检查计算机上正在运行Windows Services和IIS网站。 它以HTTP GET操作作为响应,该操作返回状态码和一些在HealthCheck Endpoint UI应用程序中使用的详细信息(稍后将介绍) 界面 /$WINDOWS-SERVICE...
  • Python Windows Service的方式运行

    千次阅读 2012-12-13 13:41:48
    运行该进程的用户,未必是当前登录的用户。 该进程如果依赖其他服务,哪么该服务启动前,依赖服务回启动。该服务停止后,依赖服务会停止。 服务可知计算机启动后自动启动,或者手动启动。 windows NT 通过...

    服务管理器(SCM) 是windows NT的 一部分,所有服务必须通过SCM 注册,SCM负责启动,停止服务等。

    当一个进程通过SCM注册后, 有如下特质:

    运行该进程的用户,未必是当前登录的用户。

    该进程如果依赖其他服务,哪么该服务启动前,依赖服务回启动。该服务停止后,依赖服务会停止。

    服务可知计算机启动后自动启动,或者手动启动。

    windows NT 通过执行一个进程开始相应服务。一旦这个进程执行,它需要告知SCM它实际上是作为一个服务运行。还需要传给SCM一个控制句柄(control handler)。其实就是一个函数,用于处理SCM 发来的相关信息。 当服务被停止时, SCM传信息给控制句柄。服务本身负责处理该请求,并停止本身服务。

    pywin32 服务相关module

    win32service 实现了Win32服务功能。

    win32serviceutil 对api的包装,始面向用户的接口更友好。

    PythonService.exe 使用pywin32 服务器,它必须先注册。

    服务框架类

    win32serviceutil.ServiceFramework

    __init__

    构造函数,注册ServiceCtrlHandler给SCM

    ServiceCtrlHandler

    本服务的control handler 的默认实现。该函数会查询类内的函数名,用以判断该服务提供哪些控制接口,比如类内有SvcPause 函数。则会认为该服务可以被暂停。

    SvcRun

    服务入口点。服务运行,就是运行这个函数。

    代码样例

       
    1. # SmallestService.py
    2. #
    3. # A sample demonstrating the smallest possible service written in Python.
    4. import win32serviceutil
    5. import win32service
    6. import win32event
    7. class SmallestPythonService(win32serviceutil.ServiceFramework):
    8.     _svc_name_ = "SmallestPythonService"
    9.     _svc_display_name_ = "The smallest possible Python Service"
    10.     def __init__(self, args):
    11.         win32serviceutil.ServiceFramework.__init__(self, args)
    12.         # Create an event which we will use to wait on.
    13.         # The "service stop" request will set this event.
    14.         self.hWaitStop = win32event.CreateEvent(None00None)
    15.     def SvcStop(self):
    16.         # Before we do anything, tell the SCM we are starting the stop process.
    17.         self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
    18.         # And set my event.
    19.         win32event.SetEvent(self.hWaitStop)
    20.     def SvcDoRun(self):
    21. # 程序代码
    22.         # We do nothing other than wait to be stopped!
    23.         win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE)
    24. if __name__=='__main__':
    25.     win32serviceutil.HandleCommandLine(SmallestPythonService)
    安装服务

    进入PythonService.exe所在目录, 命令行下执行命令

    (PATH)>PythonService.exe /register
    Registering the Python Service Manager...
    

    安装服务

    C:/Scripts> SmallestService.py install
    Installing service SmallestPythonService to Python class
       C:/Scripts/SmallestService.SmallestPythonService
    Service installed
    C:/Scripts>
    

    启动服务

    C:/Scripts> python.exe SmallestService.py start
    Starting service SmallestPythonService
    C:/Scripts>
    

    启动确认

    C:/Scripts> python.exe SmallestService.py start
    Starting service SmallestPythonService
    Error starting service: An instance of the service is already running.
    C:/Scripts>
    

    停止服务

    C:/Scripts> python.exe SmallestService.py stop
    Stopping service SmallestPythonService
    C:/Scripts>

    展开全文
  • Windows Service获取运行目录的方法

    千次阅读 2015-03-02 13:40:11
    一般获取目录方法: ...这个目录并不一定是EXE文件所在的目录,而且在程序运行中是可以改变的。 System.IO.Directory类提供了GetCurrentDirectory方法,该方法是对Win32 API的GetCurrentDirectory函
  • Windows Service Wrapper

    千次阅读 2018-12-20 17:11:17
    Windows Service Wrapper 可以将 Java 的 jar 包注册为 windows 服务。
  • 彻底关闭Antimalware Service Executable(windows defender)

    万次阅读 多人点赞 2019-12-02 10:28:15
    因为我的电脑并不是特别好,而Antimalware Service Executable服务占用的CPU过高,导致电脑特别卡,...关闭Antimalware Service Executable(windows defender) 该博文的第一种方案顺利解决了我的问题,但两天后该...
  • Java用JavaService实现Windows系统服务

    万次阅读 2016-04-09 11:52:51
    Java用JavaService实现Windows系统服务
  • JavaService 注册windows服务

    千次阅读 2014-12-11 09:57:17
    最近项目自己用java写了一个socket服务器,最开始运行的方法,总是会弹出一个命令窗口,这样也不是办法,后来上网找资料看能不能把java程序注册成windows服务?经过了一番搜索,终于找到了一个便捷的方法:使用Java...
  • 1.使用Windows键+ R键盘快捷键打开运行命令。  2.键入regedit.exe,然后单击确定以打开注册表。  3.浏览以下路径:  HKEY_LOCAL_MACHINE/SOFTWARE/Policies/Microsoft/Windows Defender  4.右键单击Windows ...
  • Windows Service简介: 一个Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序。Windows服务程序虽然是可执行的,但是它不像一般的可执行文件通过双击就能开始运行了,它必须有特定的启动方式...
  • VMware Workstation 是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试 、部署新的应用程序的最佳解决方案。VMware Workstation可在一部实体机器上模拟完整的...
  • C#写Windows Service(windows服务程序)

    千次阅读 热门讨论 2016-07-25 11:43:06
    背景: ...windows service概述:  一个Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序。Windows服务程序虽然是可执行的,但是它不像一般的可执行文件通过点击一下就直接可
  • Windows Service这一块并不复杂,但是注意事项太多了,网上资料也很凌乱,偶尔自己写也会丢三落四的。所以本文也就产生了,本文不会写复杂的东西,完全以基础应用的需求来写,所以不会对Windows Service写很深入。 ...
  • ACE_NT_ServiceWINDOWS

    千次阅读 2006-05-22 10:25:00
    ACE_NT_ServiceWINDOWS)本人的观点,SERVICE就是WINDOWS版的DAEMON。ACE_NT_Service通过包装一整套WINDOWS提供的SERVICE API定义了一个控制NT SERVICE的接口。应用程序继承该接口就可以实现和UNIX上DAEMON相似的...
  • 很多三方小程序都没有提供将自身注册为Windows标准服务的方法,但是通过Windows Service Wrapper即可达到目的 一、下载地址 官方主页:https://github.com/kohsuke/winsw/ 下载地址:...
  • 所谓Windows后台服务,即后台自动运行的程序,一般随操作系统启动而启动,在我的电脑 服务后应用程序 服务里面能看到当前电脑的服务.一般而言,程序上用VC、C++写Windows服务,但是我对这些语言不是很熟,一般编程用C#较多...
  • WindowsService视频

    千次阅读 2009-08-31 14:37:00
    WindowsServiceDemo视频我个人录制的关于 ...包括如何创建 WindowsService ,部署 WindowsService ,以及调试 WindowsService文件是 exe 文件,可直接运行观看WindowsServiceDemo视频http://download.csdn.net/source
  • jenkins-slave service on windows

    千次阅读 2014-05-29 16:02:03
    最近在尝试使用Jenkins,并试着把把Windows7
  • Windows Service 创建与安装

    千次阅读 2016-09-12 17:57:01
    使用Vs的 Windows Service模板可以很方便地开发Windows 服务。在Service文件 的设计界面,右键点击Add Installer,可以添加一个ProjectInstaller类, 然后设定服务的运行账号,名称等。 #region Component ...
  • Windows Service 介绍

    千次阅读 2018-10-31 11:29:23
    Microsoft Windows 服务(过去称为 NT 服务)允许用户创建可在其自身的 Windows 会话中长时间运行的可执行应用程序。 这些服务可在计算机启动时自动启动,可以暂停和重启,并且不显示任何用户界面。 这些功能使...
  • C#开发Windows Service程序

    万次阅读 2011-01-07 16:12:00
    Windows Service概念介绍 Windows Service,也称Windows服务,是32位Windows操作系统中一种长期运行的后台程序。它们长期后台运行,没有用户界面,默默无闻,但它们却是支持Windows正常运行的幕后英雄,却永无...
  • Windows Update Medic Service 自动更新

    千次阅读 2020-04-27 16:14:47
    win10 升级到1809版后,多了一个“Windows Update Medic Service”服务,该服务是“Windows Update”服务的保镖,开机会自动运行windows update服务,且该服务无法禁用,从而造成之前禁用win10更新的方法全部失效,...
  • 我们怎样才能在服务器上使用asp.net定时执行任务而不需要安装windows service?我们经常需要运行一些维护性的任务或者像发送提醒...所以,我们不得不构建自己的windows service运行那些定时任务。但是在一个共享的
  • Windows Service CMD 命令 sc

    千次阅读 2016-07-08 11:05:57
    除了通过“控制面板”>“管理工具”>“服务”来查看服务之外,还有很多种其他的方式可以对Windows服务进行管理。在命令行方式下,你可以使用sc.exe(Service Control的缩写)来管理服务。  我们可以用sc.exe命令...
  • 有关windows service的详细介绍,不在本文叙述。如果想了解,自己到网上去搜一搜,关键词就是“windows service”,搜索结果保证不会让你失望,呵呵!本文的预期读者即为对windows service有一定了解,但又没有编写...
  • filezilla连接windows service服务器

    千次阅读 2018-02-26 23:00:23
    下载FileZila_Server(可以使用windows service自带的IE浏览器访问百度,进行搜索)解压文件,进行安装默认配置,不需要修改选择安装目录默认配置,无需修改点击安装Install安装完成关闭然后会自动跳出设置连接界面...
  • C# windows service 创建 、调试、部署

    千次阅读 2018-08-31 15:21:54
    查看windows service WIN+R 输入 services.msc 也可 右击我的电脑 》属性 》控制面板 》 找到管理工具 》双击 》 找到服务 ,事件查看器可以查看 service 运行 的事件 日志 方框对应下文中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 265,481
精华内容 106,192
关键字:

service运行windows