如何生成唯一Class ID(100分)

  • 主题发起人 主题发起人 glyu
  • 开始时间 开始时间
G

glyu

Unregistered / Unconfirmed
GUEST, unregistred user!
为自己的执行程序生成一个唯一的Class ID,怎样生成?
另外,Class ID的各段有何意义,那些是系统保留的?
 
要用代码的话: function CreateClassID: string; (comobj.pas)

一般用new->activex->...的wizard, 它会自动帮你生成一个GUID的
 
在Code Editor里,用Ctrl+Shift+G也可以生成一个ClassID.
 
Visual Stdio 98里有个叫GUIDGEN.EXE的东东,可以生成唯一的GUID
 
其实用type_liberary_viewer(好象)就可以直接生成GUID.
 
ctrl+shift+g is enough for this:-)
 
还是Another_eYes的方法好,因为ClassID是动态生成的。
如果用静态生成的话,如果你的程序能同时运行几个实例,那么每个实例的ClassID
会是一样的了,失去了唯一性。
 
CreateClassID generates a new GUID and returns it as a string.

Unit

ComObj

Category

COM utilities

extern PACKAGE AnsiString __fastcall CreateClassID();

Description

Use CreateClassID to create a new GUID and access it as a string.
 
对不起,我的本意是为编一个通用程序,程序生成一个固定不变的ClassID,
在哪个机器上运行时都有同样的ClassID,但又不想与其他系统程序和应用程序
发生冲突。故我关心Class ID的各段有何意义,那些是系统保留的?
 
hehe, guid能有冲突, 太难碰到了, 也许1/10000000000才有可能, 可以忽略不计:-)
放心大胆的编吧.
 
1、如果你的程序已经有了这个ID,在其它机器上也是这个ID;
2、如果一定要每次生成一个统一的ID,那么,干脆只生成一次,把它存在EXE里好了:-)
 
用 CoCreateGUID(...),
如果你的机器上有网卡, 那CLASSID绝对是唯一的
 
理论上CLASSID是根据网卡物理地址,当前时间,根据一定算法生成的.
物理地址是网卡生产厂商根据一个标准组织分配的.(前几位是分配的,
后几位是产品流水号).(实际上物理地址是有方法改变的).

如果你要用到CLASSID,只要调用CreateGUID就可以!
 
抱歉,由于生病,今天才回复大家,见谅。
 
后退
顶部