CN102999375B - 防止应用程序运行多个实例的方法、装置及信息处理系统 - Google Patents
防止应用程序运行多个实例的方法、装置及信息处理系统 Download PDFInfo
- Publication number
- CN102999375B CN102999375B CN201110278148.8A CN201110278148A CN102999375B CN 102999375 B CN102999375 B CN 102999375B CN 201110278148 A CN201110278148 A CN 201110278148A CN 102999375 B CN102999375 B CN 102999375B
- Authority
- CN
- China
- Prior art keywords
- client
- status
- information table
- application program
- running
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明适用于信息处理领域,提供了一种防止应用程序运行多个实例的方法、装置及信息处理系统,所述方法包括:接收客户端发送的实例运行请求信息,所述请求信息中携带有表示该客户端的第一ID;判断预设的状态信息表中是否存在所述第一ID;在不存在时,运行所述实例,向该客户端反馈已运行信息,并将该实例运行信息存储至所述状态信息表。本发明可有效控制客户端的应用程序运行一个实例,而且实现方法简单、高效、可靠性高。
Description
技术领域
本发明属于信息处理领域,尤其涉及一种防止应用程序运行多个实例的方法及系统。
背景技术
Windows的多任务特性使得一个应用程序可以同时运行多个实例。但同时运行多个实例,可能会占用过多的系统资源,或者造成应用程序的不稳定,特别是对于进入游戏大厅的客户端,防止应用程序运行多个实例可有效解决用户作弊问题。
现有技术通常采用命名的互斥量内核对象来防止应用程序运行多个实例,该方法在应用程序启动时,调用CreateMutex函数创建以某一字符串命名的互斥量内核对象。如果调用CreateMutex函数之前以该字符串命名的互斥量内核对象已经存在,则系统会返回ERROR_ALREADY_EXISTS,表示已存在该运行实例。采用命名的互斥量内核对象方法实现简单、可靠性也较高。
沙盘(sandboxie)是一种安全软件,将一个应用程序放入沙盘运行,它所创建、修改或者删除的所有文件和注册表都会被虚拟化重定向,也就是说所有操作都是虚拟的,真实的文件和注册表不会被改动,从而确保病毒无法对系统关键部位进行改动破坏系统。sandboxie改变了应用程序写入数据的地点,不让它写回到硬盘中,而是写到由sandboxie创造的一个虚拟区域。当某个应用程序在sandboxie中运行时,它调用CreateMutex创建互斥量内核对象,实际上是在sandboxie虚拟出来的一个沙盘中操作,Sandboxie可以虚拟出多个沙盘,各个沙盘都是独立运作的空间,相互处于隔绝的状态,任意一个沙盘的开启和关闭,都不会影响其它沙盘,因此即使该系统中已经有其他实例在运行,它也总能够创建成功而不会返回ERROR_ALREADY_EXISTS,所以如果使用Sandboxie来运行应用程序,那么利用互斥量内核对象防止应用程序运行多个实例的方法完全无效。
发明内容
本发明实施例的目的在于提供一种防止应用程序运行多个实例的方法,旨在解决现有技术无法防止沙盘内应用程序运行多个实例的问题。
本发明实施例是这样实现的,一种防止应用程序运行多个实例的方法,所述方法包括:
接收客户端发送的实例运行请求信息,所述请求信息中携带有表示该客户端的第一ID;
判断预设的状态信息表中是否存在所述第一ID;
在不存在时,运行所述实例,向该客户端反馈已运行信息,并将该实例运行信息存储至所述状态信息表。
本发明实施例的另一目的在于提供一种防止应用程序运行多个实例的装置,所述装置包括:
信息接收单元,用于接收客户端发送的实例运行请求信息,所述信息中携带有表示该客户端的第一ID;
第一判断单元,用于判断预设的状态信息表中是否存在所述第一ID;
第一运行单元,用于在所述第一判断单元判断结果为否时,运行所述实例,向该客户端反馈已运行信息,并将该实例运行信息存储至所述状态信息表。
本发明实施例的再一目的在于提供一种信息处理系统,所述信息处理系统包括所述防止应用程序运行多个实例装置。
从上述技术方案可以看出,本发明实施例服务端根据客户端实例运行请求信息中携带的表示该客户端的第一ID,判断预设的状态信息表中是否存在所述第一ID,在不存在时,才运行该实例,从而可有效控制客户端的应用程序运行一个实例,而且实现方法简单、高效。
附图说明
图1是本发明实施例一提供的防止应用程序运行多个实例方法的实现流程图;
图2是本发明实施例二提供的防止应用程序运行多个实例方法的实现流程图;
图3是本发明实施例三提供的防止应用程序运行多个实例方法的实现流程图;
图4是本发明实施例四提供的防止应用程序运行多个实例装置的组成结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例服务端通过客户端实例运行请求信息中携带的表示该客户端的第一ID,来控制客户端的应用程序运行一个实例,实现方法简单、高效。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
图1示出了本发明实施例一提供的防止应用程序运行多个实例方法的实现流程,该方法过程详述如下:
在步骤S101中,接收客户端发送的实例运行请求信息,所述信息中携带有表示该客户端的第一ID以及该实例所属应用程序的第二ID。
在本实施例中,服务端接收客户端发送的实例运行请求信息,所述请求信息包括但不局限于表示该客户端的第一ID以及该实例所属应用程序的第二ID。其中,所述第一ID是客户端从本地运行环境中获取的具有全局唯一性的特征ID,例如:客户端网卡的物理地址。进一步的是,在客户端存在多张网卡时,为了保证第一ID的唯一性,取第一张网卡的物理地址为第一ID。所述第二ID是实例所属应用程序的进程ID(PID),该PID是进程在启动时系统自动为其分配的ID。
客户端在向服务端发送实例运行请求信息时,将获取的第一ID和第二ID一起发送给服务端。
在步骤S102中,判断预设的状态信息表中是否存在所述第一ID,在判断结果为“是”时,执行步骤S103,在判断结果为“否”时,执行步骤S105。
在本实施例中,预设的状态信息表如表一所示:
表一
如表一所示,该状态信息表中包含客户端ID(第一ID)、应用程序ID(第二ID)以及每个应用程序对应实例的运行状态。其中,每个客户端包含多个应用程序,每个应用程序对应一个实例的运行状态,所述运行状态包括但不局限于运行、暂停、退出等。
在本实施例中,服务端在接收到携带有第一ID和第二ID的实例运行请求后,判断预设的状态信息表中是否存在所述第一ID,在存在时,说明该客户端已经登录到服务器,执行步骤S103,否则,执行步骤S105。
在步骤S103中,判断所述状态信息表中该第一ID对应的信息中是否存在所述第二ID,在判断结果为“是”时,执行步骤S104,在判断结果为“否”时,执行步骤S105。
在本实施例中,在状态信息表中存在所述第一ID时,继续判断所述状态信息表中该第一ID对应的信息中是否存在所述第二ID,具体的是,判断所述状态信息表中该第一ID对应的应用程序ID列是否存在所述第二ID,即判断该客户端已登录到服务端的应用程序中是否存在该实例所属的应用程序,在存在时,说明该应用程序已经存在运行实例,执行步骤S104,否则,执行步骤S105。
在步骤S104中,拒绝该实例运行请求。
在本实施例中,当状态信息表中存在该应用程序ID时,说明该应用程序已经有实例在运行。因此,为了保证该每个应用程序只能运行一个实例,拒绝当前实例的运行请求。
在步骤S105中,运行所述实例,向该客户端反馈已运行信息,并将该实例运行信息存储至所述状态信息表。
在本实施例中,所述实例运行信息包括但不局限于该实例所属应用程序ID、该实例对应客户端ID以及该实例的运行状态(例如:该实例当前的运行状态为运行)。
本发明实施例服务端根据客户端实例运行请求信息中携带的表示该客户端的第一ID以及该实例所属应用程序的第二ID,判断预设的状态信息表中是否存在所述第一ID,在不存在时,运行该实例;在存在时,继续判断所述第一ID对应的信息中是否存在所述第二ID,在不存在所述第二ID时,则运行该实例。本发明实施例可有效控制客户端的每个应用程序运行一个实例,而且实现方法简单、高效、可靠性高。
实施例二:
图2示出了本发明实施例二提供的防止应用程序运行多个实例方法的实现流程,该实施例是在实施一的基础上增加了步骤S206:
在步骤S206中,实时监控所述实例的运行状态,若在预设时间域值内该实例的运行状态未发生改变,则删除所述状态信息表中该实例的运行信息。
在本实施例中,为了防止客户端的某个实例在退出服务端时,服务端由于网络故障等原因未接收到该实例的退出信息,影响下个实例的运行,服务端为每个实例的运行状态设置一个时间阈值(例如:运行状态为暂停的时间阈值为20分钟等),若在该时间域值内该实例的运行状态未发生改变,则删除状态信息表中该实例的运行信息,以便下个实例的运行。
实施例三:
图3示出了本发明实施例三提供的防止应用程序运行多个实例方法的实现流程,该实施例是在实施二的基础上增加了步骤S307:
在步骤S307中,实时监控所述实例的运行状态,在所述实例的运行状态存在异常时,进行预警处理。
在本实施例中,实时监控实例的运行状态,在所述实例的运行状态存在异常时(例如:频繁的退出与运行、同个应用程序的多个实例运行请求等),对所述实例进行预警处理。所述预警处理的方式包括但不局限于将存在异常实例对应的应用程序ID或者客户端ID列入黑名单。通过本实施例可有效提高系统的稳定性和安全性。
进一步的是,本实施例还包括在监控所述实例运行状态的同时,通过现有的数据挖掘算法挖掘出用户的行为习惯信息,根据所述行为习惯信息,优先安排对应实例的运行。例如:在游戏大厅,如果某个实例运行某个游戏的次数大于预设阈值(例如:30次/月),则提取该实例的运行信息,在下次运行时,优先安排该实例的运行。通过本实施例可有效提高系统的实用性,增强用户对系统的满意度。
作为本发明的另一实施例,当客户端通过sandboxie来运行多个实例时,还可采用命名互斥量和禁止应用程序在sandboxie中运行相结合的方法来防止应用程序运行多个实例。
在本实施例中,命名互斥量属于现有技术,在此不再赘述。而禁止应用程序在sandboxie中运行是通过在启动应用程序时,检查该应用程序的进程空间中是否存在与所述应用程序对应的动态链接库(Dynamic Link Library,DLL)(每个应用程序在启动时,sandboxie会将所述应用程序对应的DLL注入到该应用程序的进程中),在存在时,则禁止该应用程序的运行。
举例如下:
HMODULE hSbieDll=GetModuleHandleW(L″SbieDll.dll″);//考虑到SbieDll.dll的名称可能会更改,可以把这个名称从后台下发或者从配置文件中读取。
if(hSbiedll!=NULL)
{//run in sanboxie,exit anyway.
}
本发明实施例将禁止应用程序在sandboxie中运行和命名互斥量方法相结合,可有效防止sandboxie中应用程序运行多个实例,而且实现方法简单、高效、实现成本较低,并能有效解决游戏大厅中用户同时开启多个客户端进行作弊的问题。
实施例四:
图4示出了本发明实施例四提供的防止应用程序运行多个实例装置的组成结构,为了便于说明,仅示出了与本发明实施例相关的部分。
该防止应用程序运行多个实例装置可以是运行于信息处理系统内的软件单元、硬件单元或者软硬件相结合的单元,也可以作为独立的挂件集成到这些信息处理系统中或者运行于这些信息处理系统的应用系统中。
该防止应用程序运行多个实例装置包括信息接收单元41、第一判断单元42以及第一运行单元43。其中,各单元的具体功能如下:
信息接收单元41,用于接收客户端发送的实例运行请求信息,所述信息中携带有表示该客户端的第一ID;
第一判断单元42,用于判断预设的状态信息表中是否存在所述第一ID;
第一运行单元43,用于在所述第一判断单元判断结果为否时,运行所述实例,向该客户端反馈已运行信息,并将该实例运行信息存储至所述状态信息表。
进一步的,所述请求信息中还携带有该实例所属应用程序的第二ID,所述装置还包括第二判断单元44和第二运行单元45:
所述第二判断单元44用于在所述第一判断单元判断结果为是时,判断所述状态信息表中该第一ID对应的信息中是否存在所述第二ID;
所述第二运行单元45用于在所述第二判断单元判断结果为否时,运行所述实例,向该客户端反馈已运行信息,并将该实例运行信息存储至所述状态信息表。
在本实施例中,所述实例运行信息包括该实例所属应用程序ID、该实例对应客户端ID以及该实例的运行状态等。
本实施例提供的防止应用程序运行多个实例装置可以使用在前述对应的防止应用程序运行多个实例方法,详情参见上述防止应用程序运行多个实例方法实施例一的相关描述,在此不再赘述。
作为本发明的另一实施例,所述装置还包括监控单元46:
所述监控单元46用于实时监控所述实例的运行状态,若在预设时间域值内该实例的运行状态未发生改变,则删除所述状态信息表中该实例的运行信息。
本实施例提供的防止应用程序运行多个实例装置可以使用在前述对应的防止应用程序运行多个实例方法,详情参见上述防止应用程序运行多个实例方法实施例二的相关描述,在此不再赘述。
作为本发明的另一实施例,所述装置还包括处理单元47:
所述处理单元47用于实时监控所述实例的运行状态,在所述实例的运行状态存在异常时,进行预警处理。
本实施例提供的防止应用程序运行多个实例装置可以使用在前述对应的防止应用程序运行多个实例方法,详情参见上述防止应用程序运行多个实例方法实施例三的相关描述,在此不再赘述。
本发明实施例服务端根据客户端实例运行请求信息中携带的表示该客户端的第一ID以及该实例所属应用程序的第二ID,判断预设的状态信息表中是否存在所述第一ID,在不存在时,运行该实例;在存在时,继续判断所述第一ID对应的信息中是否存在所述第二ID,在不存在所述第二ID时,则运行该实例。本发明实施例可有效控制客户端的每个应用程序运行一个实例,而且实现方法简单、高效、可靠性高。另外,为了防止客户端的某个实例在退出服务端时,服务端由于网络故障等原因未接收到该实例的退出信息,影响下个实例的运行,服务端为每个实例的运行状态设置一个时间阈值,若在该时间域值内该实例的运行状态未发生改变,则删除状态信息表中该实例的运行信息,以便下个实例的运行。同时,通过实时监控所述实例的运行状态,在所述实例的运行状态存在异常时,进行预警处理,可有效提高系统的安全性及实用性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种防止应用程序运行多个实例的方法,其特征在于,所述方法包括:
接收客户端发送的实例运行请求信息,所述请求信息中携带有表示该客户端的第一ID和表示该实例所属应用程序的第二ID;
判断预设的状态信息表中是否存在所述第一ID;
在预设的状态信息表中存在所述第一ID时,判断所述状态信息表中该第一ID对应的信息中是否存在所述第二ID;
在所述状态信息表中该第一ID对应的信息中存在所述第二ID时,拒绝该实例运行请求。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
在所述预设的状态信息表中不存在所述第一ID时,运行所述实例,向该客户端反馈已运行信息,并将该实例运行信息存储至所述状态信息表。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
在所述状态信息表中该第一ID对应的信息中不存在所述第二ID时,运行所述实例,向该客户端反馈已运行信息,并将该实例运行信息存储至所述状态信息表。
4.如权利要求1或3所述的方法,其特征在于,所述实例运行信息包括该实例所属应用程序ID、该实例对应客户端ID以及该实例的运行状态。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
实时监控所述实例的运行状态,若在预设时间域值内该实例的运行状态未发生改变,则删除所述状态信息表中该实例的运行信息。
6.如权利要求4的方法,其特征在于,所述方法还包括:
实时监控所述实例的运行状态,在所述实例的运行状态存在异常时,进行预警处理。
7.一种防止应用程序运行多个实例的装置,其特征在于,所述装置包括:
信息接收单元,用于接收客户端发送的实例运行请求信息,所述信息中携带有表示该客户端的第一ID和表示该实例所属应用程序的第二ID;
第一判断单元,用于判断预设的状态信息表中是否存在所述第一ID;
第二判断单元,用于在所述第一判断单元判断结果为是时,判断所述状态信息表中该第一ID对应的信息中是否存在所述第二ID;
第三运行单元,用于在所述第二判断单元判断结果为是时,拒绝该实例运行请求。
8.如权利要求7所述的装置,其特征在于,所述装置还包括:第一运行单元,用于在所述第一判断单元判断结果为否时,运行所述实例,向该客户端反馈已运行信息,并将该实例运行信息存储至所述状态信息表。
9.如权利要求7所述的装置,其特征在于,所述装置还包括:
第二运行单元,用于在所述第二判断单元判断结果为否时,运行所述实例,向该客户端反馈已运行信息,并将该实例运行信息存储至所述状态信息表。
10.如权利要求7所述的装置,其特征在于,所述实例运行信息包括该实例所属应用程序ID、该实例对应客户端ID以及该实例的运行状态。
11.如权利要求10所述的装置,其特征在于,所述装置还包括:
监控单元,用于实时监控所述实例的运行状态,若在预设时间域值内该实例的运行状态未发生改变,则删除所述状态信息表中该实例的运行信息;
处理单元,用于实时监控所述实例的运行状态,在所述实例的运行状态存在异常时,进行预警处理。
12.一种信息处理系统,其特征在于,所述信息处理系统包含权利要求7至11任一项所述的防止应用程序运行多个实例装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110278148.8A CN102999375B (zh) | 2011-09-19 | 2011-09-19 | 防止应用程序运行多个实例的方法、装置及信息处理系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110278148.8A CN102999375B (zh) | 2011-09-19 | 2011-09-19 | 防止应用程序运行多个实例的方法、装置及信息处理系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102999375A CN102999375A (zh) | 2013-03-27 |
CN102999375B true CN102999375B (zh) | 2016-10-05 |
Family
ID=47927979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110278148.8A Active CN102999375B (zh) | 2011-09-19 | 2011-09-19 | 防止应用程序运行多个实例的方法、装置及信息处理系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102999375B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656728B (zh) * | 2017-09-15 | 2020-08-04 | 网宿科技股份有限公司 | 一种应用程序实例的创建方法及云服务器 |
CN117319224A (zh) * | 2023-10-15 | 2023-12-29 | 上海同星智能科技有限公司 | 汽车总线虚拟通道的实现方法及实现系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101471810A (zh) * | 2007-12-28 | 2009-07-01 | 华为技术有限公司 | 一种在集群环境下实现任务的方法、装置及系统 |
CN101667125A (zh) * | 2009-09-30 | 2010-03-10 | 北京航空航天大学 | 业务流程建模标记模型执行中运行实例匹配方法及系统 |
CN101667141A (zh) * | 2009-09-17 | 2010-03-10 | 深圳华为通信技术有限公司 | 一种无线保真管理工具的启动、退出方法、装置和终端 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101686245B (zh) * | 2008-09-28 | 2014-06-11 | 国际商业机器公司 | 用于隔离超文本传输协议会话的方法和系统 |
CN101997903B (zh) * | 2009-08-27 | 2013-09-25 | 国际商业机器公司 | 用于处理超文本传输协议请求的方法和系统 |
-
2011
- 2011-09-19 CN CN201110278148.8A patent/CN102999375B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101471810A (zh) * | 2007-12-28 | 2009-07-01 | 华为技术有限公司 | 一种在集群环境下实现任务的方法、装置及系统 |
CN101667141A (zh) * | 2009-09-17 | 2010-03-10 | 深圳华为通信技术有限公司 | 一种无线保真管理工具的启动、退出方法、装置和终端 |
CN101667125A (zh) * | 2009-09-30 | 2010-03-10 | 北京航空航天大学 | 业务流程建模标记模型执行中运行实例匹配方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102999375A (zh) | 2013-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8806639B2 (en) | Contextual virtual machines for application quarantine and assessment method and system | |
CN110764871B (zh) | 一种基于云平台的拟态化应用封装与控制系统和方法 | |
US9756007B1 (en) | Systems and methods for detecting compromised messaging accounts | |
CN106326743A (zh) | 用于虚拟机中的恶意软件检测的方法和系统 | |
US10204125B2 (en) | Method, apparatus, and application platform for updating application object attribute | |
CN110603527B (zh) | 用于服务器侧生产代码的条件调试的方法、系统和设备 | |
CN102999726B (zh) | 文件宏病毒免疫方法和装置 | |
CN105844146B (zh) | 一种保护驱动程序的方法、装置及电子设备 | |
US20150264074A1 (en) | Application security testing | |
CN105045605A (zh) | 一种将dll注入目标进程的方法和系统 | |
US11880458B2 (en) | Malware detection based on user interactions | |
US20070094675A1 (en) | Object mobility | |
US7917902B2 (en) | Archive stream based install | |
CN102236764A (zh) | 用于Android系统的抵御桌面信息攻击的方法和监控系统 | |
CN105844155A (zh) | 宏病毒查杀方法及系统 | |
CN103440165B (zh) | 一种面向个人的任务分派与处理方法 | |
CN109359092A (zh) | 文件管理方法、桌面显示方法、装置、终端及介质 | |
CN102999375B (zh) | 防止应用程序运行多个实例的方法、装置及信息处理系统 | |
CN109388435A (zh) | 实现app同时多次开启操作的方法和装置 | |
CN105357306B (zh) | 多平台数据共享系统及其数据共享方法 | |
Lee et al. | SAMD: Fine-grained application sharing for mobile collaboration | |
CN111905361B (zh) | 游戏服务系统、游戏处理方法、存储介质及设备 | |
CN103049306A (zh) | 基于接口的api上的静态成员和参数化构造函数的模拟 | |
CN103034809B (zh) | 一种免疫文件宏病毒的方法和装置 | |
CN104021168A (zh) | 一种浏览网页的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |