发明内容
本发明实施例提供一种文档权限控制方法和装置,以实现对各种类型的文档进行权限控制,并且不改变文档默认的打开方式。
本发明实施例提供一种文档权限控制方法,包括:
当用户查看设置权限的文档时,根据所述用户的信息,从服务器获取并保存所述用户对所述文档拥有的权限;
在所述文档的文件名中添加标识,并在所述文档对应的文档进程中打开所述文档;
根据所述标识查找所述文档对应的文档窗口句柄,建立并保存所述文档窗口句柄、所述文档以及所述用户对所述文档拥有的权限的对应关系;
当所述用户对所述文档进程中打开的至少两个文档之一进行操作时,根据当前操作文档的文档窗口句柄,在保存的对应关系中进行查找,获得所述用户对所述当前操作文档拥有的权限,并根据所述权限控制所述用户对所述当前操作文档的操作。
本发明实施例还提供一种文档权限控制装置,包括:
权限获取模块,用于当用户查看设置权限的文档时,根据所述用户的信息,从服务器获取所述用户对所述文档拥有的权限;
保存模块,用于保存所述权限获取模块获取的权限;
添加模块,用于在所述文档的文件名中添加标识;
打开模块,用于在所述文档对应的文档进程中打开所述文档;
查找模块,用于根据所述添加模块添加的标识查找所述文档对应的文档窗口句柄;
建立模块,用于建立所述查找模块查找到的文档窗口句柄、所述文档以及所述用户对所述文档拥有的权限的对应关系;
所述保存模块,还用于保存所述建立模块建立的对应关系;
获得模块,用于当所述用户对所述文档进程中打开的至少两个文档之一进行操作时,根据当前操作文档的文档窗口句柄,在所述保存模块保存的对应关系中进行查找,获得所述用户对所述当前操作文档拥有的权限;
控制模块,用于根据所述获得模块获得的权限控制所述用户对所述当前操作文档的操作。
本发明实施例,在文档的文件名中添加标识,根据该标识查找文档对应的文档窗口句柄,建立并保存文档窗口句柄、文档以及用户对该文档拥有的权限的对应关系;当该用户对该文档对应的文档进程中打开的至少两个文档之一进行操作时,根据当前操作文档的文档窗口句柄,在保存的对应关系中进行查找,获得该用户对当前操作文档拥有的权限,进而可以根据该权限控制用户对文档的操作。从而实现了对各种类型的文档进行权限控制,并且不改变文档默认的打开方式,在打开多个文档时,避免了***开销和资源消耗的增加。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明文档权限控制方法一个实施例的流程图,如图1所示,该实施例可以包括:
步骤101,当用户查看设置权限的文档时,根据该用户的信息,从服务器获取并保存该用户对该文档拥有的权限。
本实施例中,文档作者或文档管理员设置用户对文档拥有的权限之后,客户端将设置的用户对文档拥有的权限上传至服务器,由服务器保存该权限。具体地,文档作者或文档管理员可以根据用户的级别设置用户对文档拥有的权限,例如:普通用户对该文档拥有只读权限,中级用户对该文档拥有修改权限,高级用户对该文档拥有完全控制权限等;服务器可以在数据库或数据文件中对应保存不同级别的用户对该文档拥有的权限;当用户查看设置权限的文档时,客户端可以将该用户的信息发送至服务器,在服务器根据该用户的信息确定该用户的级别,进而根据该用户的级别确定该用户对该文档拥有的权限之后,客户端可以从服务器获取该用户对该文档拥有的权限,然后客户端保存获取的该用户对该文档拥有的权限;其中,该用户的信息可以为该用户的用户名或用户标识等可以标识该用户身份的信息。以上仅是本实施例的一种实现方式,本发明实施例并不仅限于此,本发明实施例对文档权限的设置方式、服务器保存文档权限的方式和客户端从服务器获取文档权限的方式不作限定,只要客户端可以根据用户的信息,从服务器获取该用户对该文档拥有的权限即可。
步骤102,在该文档的文件名中添加标识,并在该文档对应的文档进程中打开该文档。
本实施例中,文档***默认文档的窗口标题为该文档的文件名,客户端在该文档的文件名中添加标识之后,该文档的窗口标题中会自动包含该标识。该标识可以根据该文档的全路径名生成;具体地,客户端可以根据文档的全路径名通过信息-摘要5(Message-Digest Algorithm 5;以下简称MD5)算法生成该标识。由于文档的全路径名在Windows操作***中是唯一的,因此根据该文档的全路径名生成的标识在Windows操作***中也是唯一的。
当然本发明实施例并不仅限于此,客户端也可以采用其他的方式生成上述标识,只要生成的标识在操作***中唯一即可,本发明实施例中的操作***也并不仅限于Windows操作***,该操作***还可以为Linux或Unix操作***,但本发明实施例以Windows操作***为例进行说明。
本实施例中,客户端可以采用文档***默认的“单进程多文档”方式,在该文档对应的文档进程中打开上述文档。
步骤103,根据该标识查找该文档对应的文档窗口句柄,建立并保存该文档窗口句柄、该文档以及该用户对该文档拥有的权限的对应关系。
本实施例中,由于上述标识在Windows操作***中是唯一的,因此根据该标识可以唯一查找到该文档对应的文档窗口句柄。文档窗口句柄在Windows操作***中是唯一的,文档窗口句柄可以唯一标识一个文档。
在建立并保存该文档窗口句柄、该文档以及该用户对该文档拥有的权限的对应关系之后,客户端可以将文档的窗口标题恢复为文档***默认的文件名。
步骤104,当该用户对上述文档进程中打开的至少两个文档之一进行操作时,根据当前操作文档的文档窗口句柄,在保存的对应关系中进行查找,获得该用户对当前操作文档拥有的权限,并根据获得的权限控制该用户对当前操作文档的操作。
在上述用户对上述文档进程中打开的至少两个文档之一进行打印、复制或保存等操作时,客户端可以根据当前操作文档的文档窗口句柄,在保存的对应关系中进行查找,获得该用户对该当前操作文档拥有的权限,然后客户端可以根据获得的权限控制该用户对该当前操作文档的操作;具体地,客户端可以通过Windows消息钩子(Windows Hook)技术,在该文档对应的文档进程中根据该用户对当前操作文档拥有的权限控制该用户对该当前操作文档的操作。
本实施例中,文档的类型可以为Office或可移植文档格式(PortableDocument Format;以下简称:PDF)等各种类型;该文档可以为安全加密文档,也可以为非加密文档。
上述实施例中,客户端在文档的文件名中添加标识,根据该标识查找文档对应的文档窗口句柄,建立并保存文档窗口句柄、文档以及用户对该文档拥有的权限的对应关系;当该用户对该文档对应的文档进程中打开的至少两个文档之一进行操作时,根据当前操作文档的文档窗口句柄,在保存的对应关系中进行查找,获得该用户对当前操作文档拥有的权限,进而可以根据该权限控制用户对当前操作文档的操作。从而实现了对各种类型的文档进行权限控制,并且不改变文档默认的打开方式,在打开多个文档时,避免了***开销和资源消耗的增加。
图2为本发明文档权限控制方法另一个实施例的流程图,本实施例以文档为安全加密文档,操作***为Windows操作***为例进行说明。如图2所示,该实施例可以包括:
步骤201,当用户查看设置权限的安全加密文档时,客户端根据该用户的信息,从服务器获取并保存该用户对该安全加密文档拥有的权限。
本实施例中,文档作者或文档管理员设置用户对安全加密文档拥有的权限之后,客户端将设置的用户对安全加密文档拥有的权限上传至服务器,由服务器保存该权限。具体地,文档作者或文档管理员可以根据用户的级别设置用户对安全加密文档拥有的权限,例如:普通用户对该安全加密文档拥有只读权限,中级用户对该安全加密文档拥有修改权限,高级用户对该安全加密文档拥有完全控制权限等;服务器可以在数据库或数据文件中对应保存不同级别的用户对该安全加密文档拥有的权限;当用户查看设置权限的安全加密文档时,客户端可以将该用户的信息发送至服务器,在服务器根据该用户的信息确定该用户的级别,进而根据该用户的级别确定该用户对该安全加密文档拥有的权限之后,客户端可以从服务器获取该用户对该安全加密文档拥有的权限,然后客户端保存获取的该用户对该安全加密文档拥有的权限;其中,该用户的信息可以为该用户的用户名或用户标识等可以标识该用户身份的信息。
以上仅是本发明的一种实现方式,本发明实施例并不仅限于此,本发明实施例对安全加密文档权限的设置方式、服务器保存安全加密文档权限的方式和客户端从服务器获取安全加密文档权限的方式不作限定,只要客户端可以根据用户的信息,从服务器获取该用户对该安全加密文档拥有的权限即可。
步骤202,客户端在该安全加密文档的文件名中增加标识。
本实施例中,文档***默认安全加密文档的窗口标题为该安全加密文档的文件名,客户端在该安全加密文档的文件名中增加标识之后,该安全加密文档的窗口标题中会自动包含该标识。
其中,客户端生成该标识时可以采用本发明图1所示实施例步骤102中提供的方法,在此不再赘述。
步骤203,客户端对该安全加密文档进行解密,在该安全加密文档对应的文档进程中,进行打开该安全加密文档的操作。
本实施例中,客户端在打开安全加密文档的操作中,可以采用文档***默认的“单进程多文档”方式。
步骤204,客户端根据标识查找该安全加密文档对应的文档窗口句柄,建立并保存该文档窗口句柄、该安全加密文档以及该用户对该安全加密文档拥有的权限的对应关系。
本实施例中,由于上述标识在Windows操作***中是唯一的,因此根据该标识可以唯一查找到该文档对应的文档窗口句柄。文档窗口句柄在Windows操作***中是唯一的,文档窗口句柄可以唯一标识一个文档。
步骤205,客户端将安全加密文档的窗口标题恢复为文档***默认的文件名。
这时,客户端将打开的安全加密文档显示给用户。
步骤206,当该用户对上述文档进程中打开的至少两个安全加密文档之一进行操作时,根据当前操作文档的文档窗口句柄,在保存的对应关系中进行查找,获得该用户对当前操作文档拥有的权限,并根据获得的权限控制该用户对当前操作文档的操作。
本实施例中,当用户对上述文档进程中打开的至少两个安全加密文档之一进行打印、复制或保存等操作时,客户端可以根据当前操作文档的文档窗口句柄,在保存的对应关系进行查找,获得该用户对该当前操作文档拥有的权限,然后客户端可以根据该权限控制用户对该当前操作文档的操作;具体地,客户端可以通过Windows Hook技术,在该安全加密文档对应的文档进程中根据用户对当前操作文档拥有的权限控制用户对该当前操作文档的操作。
本实施例中,该安全加密文档的类型可以为Office或PDF等各种类型。
上述实施例中,客户端在安全加密文档的文件名中添加标识,根据该标识查找该安全加密文档对应的文档窗口句柄,建立并保存文档窗口句柄、该安全加密文档以及用户对该安全加密文档拥有的权限的对应关系;当该用户对该安全加密文档对应的文档进程中打开的至少两个安全加密文档之一进行操作时,根据当前操作文档的文档窗口句柄,在保存的对应关系中进行查找,获得该用户对当前操作文档拥有的权限,进而可以根据该权限控制用户对当前操作文档的操作。从而实现了对各种类型的文档进行权限控制,并且不改变文档默认的打开方式,在打开多个文档时,避免了***开销和资源消耗的增加。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图3为本发明文档权限控制装置一个实施例的结构示意图,本实施例中的文档权限控制装置可以作为客户端,或客户端的一部分,实现本发明图1所示实施例的流程。本实施例提供的文档权限控制装置可用于Windows、Linux或Unix等操作***,但本实施例以Windows操作***为例进行说明。
如图3所示,该文档权限控制装置可以包括:权限获取模块31、保存模块32、添加模块33、打开模块34、查找模块35、建立模块36、获得模块37和控制模块38。
其中,权限获取模块31,用于当用户查看设置权限的文档时,根据该用户的信息,从服务器获取该用户对该文档拥有的权限。
保存模块32,用于保存权限获取模块31获取的权限。
本实施例中,文档作者或文档管理员设置用户对文档拥有的权限之后,该权限被上传至服务器,由服务器保存该权限。具体地,文档作者或文档管理员可以根据用户的级别设置用户对文档拥有的权限,例如:普通用户对该文档拥有只读权限,中级用户对该文档拥有修改权限,高级用户对该文档拥有完全控制权限等;服务器可以在数据库或数据文件中对应保存不同级别的用户对该文档拥有的权限;当用户查看设置权限的文档时,权限获取模块31可以将该用户的信息发送至服务器,在服务器根据该用户的信息确定该用户的级别,进而根据该用户的级别确定该用户对该文档拥有的权限之后,权限获取模块31可以从服务器获取该用户对该文档拥有的权限,然后保存模块32可以保存权限获取模块31获取的该用户对该文档拥有的权限;其中,该用户的信息可以为该用户的用户名或用户标识等可以标识该用户身份的信息。以上仅是本实施例的一种实现方式,本发明实施例并不仅限于此,本发明实施例对文档权限的设置方式、服务器保存文档权限的方式和权限获取模块31从服务器获取文档权限的方式不作限定,只要权限获取模块31可以根据用户的信息,从服务器获取该用户对该文档拥有的权限即可。
添加模块33,用于在该文档的文件名中添加标识;本实施例中,文档***默认文档的窗口标题为该文档的文件名,添加模块33在该文档的文件名中添加标识之后,该文档的窗口标题中会自动包含该标识。
打开模块34,用于在该文档对应的文档进程中打开该文档。
查找模块35,用于根据添加模块33添加的标识查找该文档对应的文档窗口句柄;本实施例中,由于添加模块33添加的标识在Windows操作***中是唯一的,因此根据该标识查找模块35可以唯一查找到该文档对应的文档窗口句柄。文档窗口句柄在Windows操作***中是唯一的,文档窗口句柄可以唯一标识一个文档。
建立模块36,用于建立查找模块35查找到的文档窗口句柄、该文档以及该用户对该文档拥有的权限的对应关系。这时,保存模块32还用于保存建立模块36建立的对应关系。在保存模块32保存上述对应关系之后,客户端可以将文档的窗口标题恢复为文档***默认的文件名。
获得模块37,用于当用户对上述文档进程中打开的至少两个文档之一进行操作时,根据当前操作文档的文档窗口句柄,在保存模块32保存的对应关系中进行查找,获得该用户对该当前操作文档拥有的权限。
控制模块38,用于根据获得模块37获得的权限控制该用户对该当前操作文档的操作。具体地,控制模块38可以通过Windows Hook技术,在上述文档进程中根据获得模块37获得的的权限控制该用户对该当前操作文档的操作。
图4为本发明文档权限控制装置另一个实施例的结构示意图,本实施例中的文档权限控制装置可以作为客户端,或客户端的一部分,实现本发明图1或图2所示实施例的流程。
与图3所示的文档权限控制装置相比,不同的是,图4所示的文档权限控制装置还可以进一步包括:生成模块39。
其中,生成模块39,用于根据该文档的全路径名生成上述标识。具体地,生成模块39可以根据文档的全路径名通过MD5算法生成该标识。由于文档的全路径名在Windows操作***中是唯一的,因此根据该文档的全路径名生成的标识在Windows操作***中也是唯一的。当然本发明实施例并不仅限于此,客户端也可以采用其他的方式生成上述标识,只要生成的标识在操作***中唯一即可。
上述文档权限控制装置实现了对各种类型的文档进行权限控制,并且不改变文档默认的打开方式,在打开多个文档时,避免了***开销和资源消耗的增加。
本发明实施例提供一种文档权限控制方法和装置,可以在文档***默认的“单进程多文档”方式下,根据文档窗口句柄,实现对文档权限的控制;并且在打开多个文档时,没有改变文档***默认的“单进程多文档”方式,因此可以在同一个文档进程打开多个文档,避免了***开销和资源消耗的增加;而且,本发明实施例并不仅限于Office文档和PDF文档,可以支持各种文档类型;并且本发明实施例提供的文档权限控制方法和装置不仅可用于Windows操作***,也可用于Linux或Unix操作***。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。