论文部分内容阅读
使用QQ、爱逛论坛、常用E-mail的朋友,相信都会遇到过这样的苦恼:无论你想出多么富有创意的昵称或独特的用户名,总会有人抢在你之前已注册了这个名称,这样就形成许多人使用着相同或相似名称的尴尬现象。你不信?那你现在打开QQ查找好友,看看昵称为“流言”的人是不是不计其数?
相同的昵称虽然给我们的网络冲浪带来些许不便,但还不至于严重影响到我们的生活。不过在有些地方一旦有重名就会引起混乱,比如:全球有上亿的人在为Windows开发各种组件程序,他们在对这些组件程序命名的时候,重名的概率相当高,而当Windows遇到名称完全一样的组件程序时,它就会“手足无措”不知如何区分它们了,从而也就不能正常工作。那么有什么办法能确保自己所取的名称是唯一的,与别人绝不重复呢?通过GUID可以解决这个问题。
Windows中的奇妙数字
我们首先来做几个有趣的试验。双击打开“我的电脑”,单击“工具→文件夹选项→查看”,在高级设置中取消对“隐藏已知文件夹类型的扩展名”,确定后返回。这一操作主要是为了方便后面我们随时修改文件的后缀名。
接下来右击桌面,选择“新建→文件夹”新建一个文件夹,随意取个名称,比如为“试验”。好了,现在开始试验,右击“试验”文件夹,选择“重命名”,为它添加后缀“.{21EC2020-3AEA-1069-A2DD-08002B30309D}”(不含引号,注意前面的句点不要省略,下同)。这时文件夹的图标是不是有所改变?双击它后打开的居然是“控制面板”,原文件夹中的内容全找不到了。这是网上流传的一则文件隐藏技巧,也许你已经知道了,那么再试验一下其他的,把后缀改成“.{645FF040-5081-101B-9F08-00AA002F954E}”,现在再双击它,打开的居然是“回收站”;改成“.{D6277990-4C6A-11CF-8D87-00AA0060F5BF}”,哈哈,又成了“任务计划”了;改成“.{20D04FE0-3AEA-1069-A2D8-08002B30309D}”,打开的则是“我的电脑”。这些奇怪的数字到底是什么?请继续往下看。
GUID的来龙去脉
上面所见到的那些奇怪的数字,即所谓的CLSID(类标识符),它是Windows用来标识不同的应用程序、文件类型、OLE对象、特殊文件夹及各种组件的,它其实就是GUID在Windows中的一个别称而已。GUID,是Globally Unique Identifier的缩写,意为全球唯一标识符,借鉴于OSF(开源软件基金会)采用的UUID(Universally Unique Identifier),UUID又是DCE(分布式计算环境)的一部分,主要用于标识RPC(远程过程调用)通信的双方。
GUID是一个128位的随机数,为了确保它的随机性,它的算法主要从两方面着手:它的一部分数字来源于网卡的序列号(MAC地址,相对来说是唯一的),如果你的电脑中没有网卡,则用其他随机数替代;另一主要部分是取自系统的当前时间。所以从理论上来说,即使一台电脑每秒能产生10000000个GUID,也可以保证3240年不会重复。
创建自己的GUID
手工创建GUID是非常麻烦的一件事,其实有许多现存的工具可用,比如Visual C++就提供了两个工具:UUIDGen.exe和GUIDGen.exe。前者是命令行程序,可能过“UUIDGen.exe /?”来查看它的使用方法;后者是基于对话框的应用程序,简单地点击“New GUID”按钮就可以生成了。另外,我在搜索GUID相关资料的时候,看到有人通过Windows自带的WSH脚本,也实现了自动生成GUID。脚本很简短,引用如下:
Set TypeLib = CreateObject("Scriptlet.TypeLib")
strGUID = TypeLib.Guid
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
objIE.document.parentwindow.clipboardData.SetData "text", strGUID
objIE.Quit
将以上代码保存为后缀是“.vbs”的脚本文件(如:GUIDgen.vbs),双击脚本执行,然后随意打开一个文本编辑器,按Ctrl+V键粘贴就可以了。
现在随意生成一个GUID号作为自己QQ的昵称,再搜索一下,绝对不会有第二个人会使用到这个名字了。不过这个昵称也太难记忆了,现实生活中还是随俗一点好了,所以我将继续着我的“流言”生涯。
小提示
更多打开特殊文件夹的GUID资料,可访问本版论坛(http://bbs.cfan.com.cn/forum-144-1.html)查询。
相同的昵称虽然给我们的网络冲浪带来些许不便,但还不至于严重影响到我们的生活。不过在有些地方一旦有重名就会引起混乱,比如:全球有上亿的人在为Windows开发各种组件程序,他们在对这些组件程序命名的时候,重名的概率相当高,而当Windows遇到名称完全一样的组件程序时,它就会“手足无措”不知如何区分它们了,从而也就不能正常工作。那么有什么办法能确保自己所取的名称是唯一的,与别人绝不重复呢?通过GUID可以解决这个问题。
Windows中的奇妙数字
我们首先来做几个有趣的试验。双击打开“我的电脑”,单击“工具→文件夹选项→查看”,在高级设置中取消对“隐藏已知文件夹类型的扩展名”,确定后返回。这一操作主要是为了方便后面我们随时修改文件的后缀名。
接下来右击桌面,选择“新建→文件夹”新建一个文件夹,随意取个名称,比如为“试验”。好了,现在开始试验,右击“试验”文件夹,选择“重命名”,为它添加后缀“.{21EC2020-3AEA-1069-A2DD-08002B30309D}”(不含引号,注意前面的句点不要省略,下同)。这时文件夹的图标是不是有所改变?双击它后打开的居然是“控制面板”,原文件夹中的内容全找不到了。这是网上流传的一则文件隐藏技巧,也许你已经知道了,那么再试验一下其他的,把后缀改成“.{645FF040-5081-101B-9F08-00AA002F954E}”,现在再双击它,打开的居然是“回收站”;改成“.{D6277990-4C6A-11CF-8D87-00AA0060F5BF}”,哈哈,又成了“任务计划”了;改成“.{20D04FE0-3AEA-1069-A2D8-08002B30309D}”,打开的则是“我的电脑”。这些奇怪的数字到底是什么?请继续往下看。
GUID的来龙去脉
上面所见到的那些奇怪的数字,即所谓的CLSID(类标识符),它是Windows用来标识不同的应用程序、文件类型、OLE对象、特殊文件夹及各种组件的,它其实就是GUID在Windows中的一个别称而已。GUID,是Globally Unique Identifier的缩写,意为全球唯一标识符,借鉴于OSF(开源软件基金会)采用的UUID(Universally Unique Identifier),UUID又是DCE(分布式计算环境)的一部分,主要用于标识RPC(远程过程调用)通信的双方。
GUID是一个128位的随机数,为了确保它的随机性,它的算法主要从两方面着手:它的一部分数字来源于网卡的序列号(MAC地址,相对来说是唯一的),如果你的电脑中没有网卡,则用其他随机数替代;另一主要部分是取自系统的当前时间。所以从理论上来说,即使一台电脑每秒能产生10000000个GUID,也可以保证3240年不会重复。
创建自己的GUID
手工创建GUID是非常麻烦的一件事,其实有许多现存的工具可用,比如Visual C++就提供了两个工具:UUIDGen.exe和GUIDGen.exe。前者是命令行程序,可能过“UUIDGen.exe /?”来查看它的使用方法;后者是基于对话框的应用程序,简单地点击“New GUID”按钮就可以生成了。另外,我在搜索GUID相关资料的时候,看到有人通过Windows自带的WSH脚本,也实现了自动生成GUID。脚本很简短,引用如下:
Set TypeLib = CreateObject("Scriptlet.TypeLib")
strGUID = TypeLib.Guid
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
objIE.document.parentwindow.clipboardData.SetData "text", strGUID
objIE.Quit
将以上代码保存为后缀是“.vbs”的脚本文件(如:GUIDgen.vbs),双击脚本执行,然后随意打开一个文本编辑器,按Ctrl+V键粘贴就可以了。
现在随意生成一个GUID号作为自己QQ的昵称,再搜索一下,绝对不会有第二个人会使用到这个名字了。不过这个昵称也太难记忆了,现实生活中还是随俗一点好了,所以我将继续着我的“流言”生涯。
小提示
更多打开特殊文件夹的GUID资料,可访问本版论坛(http://bbs.cfan.com.cn/forum-144-1.html)查询。