一个ocx的注册表结构
PROGID
ProgID程序员给CLSID指定的容易记住的名字
ProgID命名约定:<Program>.<Component>.<Version>
AppID:将某个APPID(应用程序ID)映射成某个远程服务器名称。
分式COM(DCOM)将用到此关键字
组件类别:将CATID(组件类别ID)映射成某个特定的组件类别
Interface:将IID映射成某个接口相关的信息,这些信息主要用于跨进程边界使用接口的情况
Licenses:保存的是授权使用COM组件的一些认可信息
TypeLib:类型库关键字保存的是关于接口成员函数所用参数的信息和其他一些信息,可以将一根LIBID映射成存储类型库的
文件名称
ProgID及与版本无关的ProgID被列在CLSID下面
ProgID的主要作用是获取相应的CLSID
与版本号无关的ProgID也直接被列在HKEY_CLASSES_ROOT下面,他们另外一个关键字CurVer,其缺省值为组件当前版本的
ProgID
ProgID和CLSID的转换:CLSIDFromProgID,ProgIDFromCLSID
组件的自注册:STDAPI DllRegisterServer(); STDAPI DllUnRegisterServer
1.在HKEY_CLASSES_ROOT下查找ProgID,格式<Program>.<Component>.<Version>
2.在ProgID下,查看CLSID子项的值
3.在HKEY_CLASSES_ROOT\CLSID下查找CLSID的值,里面将包含InprocServer32,ProgID,类型库,和版本的几个子项
4.在HKEY_CLASSES_ROOT\TypeLib下,查找ClassID TypeLibID,将找到包含有关您的组件的类型库的信息
5.在HKEY_CLASSES_ROOT\Interface下,查找该ClassID TypeLibID,查找到所有接口ID
COM库在接到客户程序的请求后,会到注册表中检索COM对象的注册表条目,以此来定位COM对象COM对象要想成功的被COM库定位,则需要至少在注册表中写入HKEY_CLASSES_ROOT\ProgID注册和HKEY_CLASSES_ROOT\CLSID
注册
InProcServer32的字符串值,代表此COM类的载体应当是个动态链接库,指明了组件所在的物理位置,对COM库查找和定位
组件起了决定性作用
LocalServer32:指定一个32字节的本地应用程序的路径
Word.Application->CLSID
可执行程序的路径:LocalServer,LocalServer32
查找ProgID方法,在注册表的键值中查找可执行程序的名字。
DLL(OCX)文件注册与反注册方法(regsvr32用法)
DLL(OCX)⽂件注册与反注册⽅法(regsvr32⽤法)注册DLL与反注册DLL⽂件的⽅法如果经常需要注册与反注册dll可以⽤注册表⽂件复制代码代码如下:[HKEY_CLASSES_ROOT\dllfile\shell\Unregister]"Command"="regsvr32 %1 /u"[HKEY_CLASSES_ROOT\dllfile\shell\Register]"Command"="regsvr32 %1"当我们需要注册或者反注册dll时,只要在该dll⽂件上按下⿏标右键即可!由于下⾯的⽅法太过啰嗦,这⾥简单的说下,注册dll⼀般情况下,为了经常使⽤,建议将dll复制到系统盘的windows/system32⽬录,如果不是的,有时候需要加上dll的完整路径注册dll复制代码代码如下:regsvr32 /s winshow.dll反注册dll复制代码代码如下:regsvr32 /u winshow.dllocx 控件注册⽅法ocx 控件的安装⽅式有很多种,这⾥介绍最简单的⼀种。
OCX 控件⽂件复制到某个⽬录步骤:1.将需要安装的⽬录,例如 C 盘根⽬录下。
2.进⼊开始菜单,点击“运⾏”3.在出现的框中键⼊regsvr32 C:/xxxx.ocx 。
(XXXX 为控件名,C:/为⽬录)4.点击确认后等待出现提醒注册成功即可。
如果是偶尔⼀个软件使⽤,将这个ocx⽂件复制到软件⽬录即可。
反注册DLL⼤法UnRegister DLLsYou can use the Regsvr32 tool (Regsvr32.exe) to register and unregister object linking andembedding (OLE) controls such as dynamic-link library (DLL) or ActiveX Controls (OCX) filesthat are self-registerable.RegSvr32.exe has the following command-line options:Regsvr32 [/n] [/i[:cmdline]] dllname/u - Unregister server/i - Call DllInstall passing it an optional [cmdline]; when used with /u calls dlluninstall/n - do not call DllRegisterServer; this option must be used with /iWhen you use Regsvr32.exe, it attempts to load the component and call its DLLSelfRegisterfunction. If this attempt is successful, Regsvr32.exe displays a dialog indicating success.If the attempt is unsuccessful, Regsvr32.exe returns an error message, which may include aWin32 error code.Example: To unregister Winshow's winshow.dll:Click the Start button, and select RunEnter this command line:regsvr32 /u [systemroot]\winshow.dllFor example, in a Windows XP machine in which your systemroot was at c:\winnt, you wouldenter:regsvr32 /u c:\winnt\winshow.dll你能构使⽤Regsvr32⼯具Regsvr32.exe注册和反注册⽬标链接和深层OLE控制器类似于⾃动注册的动态链接库(DLL)和ActiveX控件。
注册表数据结构
如果这个键包含子键,则在注册表编辑器窗口的左边出现一个“+”号,用来表示在这个文件夹内还有好多内容。如果这个文件夹被用户打开了,那么“+”号就变为“-”号,与我们使用资源管理器的方法是一样的,如图:
LIST
10
未知
驱动程序要求的资源列表
REG_SZ
1
0~多个字节
以一个null字符线的字符串
REG_UNKNOWN
(未定义)
未知
因为数据类型索引无效而无法确定的对象类型
DWORD值(DWORD)
DWORD值是一个32位(4个字节,即双字)长度的数值。在注册表编辑器中,你将会发现系统以十六进制的方式显示DWORD值,如图:
在编辑DWORD数值时,可以选择用二进制、十进制或是十六进制的方式进行输入,如图:
字符串值(SZ)
在注册表中,字符串值一般用来表示文件的描述、硬件的标识等。通常它由字母和数字组成。下图文本输入栏中的内容即为一个键值,它是一种字符串值类型。通过键值名、键值就可以组成一种键值项数据,这就相当于Win.ini、System.ini文件中小节下的设置行。其实,使用注册表编辑器将这些键值项数据导出后,其形式与.ini文件中的设置完全一样。
注册表数据类型
注册表的键中包含着各种不同格式的数据。数据类型可以这样来分类:
通用数据类型--RegEdit、RegEdt32及其它绝大多数注册表工具都支持,并能够对之进行编辑的数据类型。
注册表的结构划分及相互关系windows的注册表有六大根键-read
一、注册表的结构划分及相互关系WINDOWS的注册表有六大根键,相当于一个硬盘被分成了六个分区。
在“运行”对话框中输入RegEdit,然后单击“确定”按钮,则可以运行注册表编辑器。
虽然在注册表中,六个根键看上去处于一种并列的地位,彼此毫无关系。
但事实上,HKEY_CLASSES_ROOT和HKEY_CURRENT_CONFIG 中存放的信息都是HKEY_LOCAL_MACHINE中存放的信息的一部分,而HKEY_CURRENT_USER中存放的信息只是HKEY_USERS存放的信息的一部分。
HKEY_LOCAL_MACHINE包括HKEY_CLASSES_ROOT和HKEY_CURRENT_USER中所有的信息。
在每次系统启动后,系统就映射出HKEY_CURRENT_USER中的信息,使得用户可以查看和编辑其中的信息。
实际上,HKEY_LOCAL_MACHINE\SOFTWARE\Classes就是HKEY_CLASSES_ROOT,为了用户便于查看和编辑,系统专门把它作为一个根键。
同理,HKEY_CURRENT_CONFIG\SY-STEM\Current Control就是HKEY_LOCAL_MACHINE\SYSTEM\Current Control。
HKEY_USERS中保存了默认用户和当前登录用户的用户信息。
HKEY_CURRENT_USER中保存了当前登录用户的用户信息。
HKEY_DYN_DATA保存了系统运行时的动态数据,它反映出系统的当前状态,在每次运行时都是不一样的,即便是在同一台机器上。
根据上面的分析,注册表中的信息可以分为HKEY_LOCAL_MACHINE和HKEY_USERS两大类,这两大类的详细内容请看后面的介绍。
二、六大根键的作用在注册表中,所有的数据都是通过一种树状结构以键和子键的方式组织起来,十分类似于目录结构。
每个键都包含了一组特定的信息,每个键的键名都是和它所包含的信息相关的。
OCX说明文档_2010-11-23
当前版本OCX(2010-11-25)提供2个返回函数,参数类型为var数组控件基本信息:UID:DC441618-0466-4D63-9A29-0C4828D2AFB9日志信息包括检测器开、关、重启信息,以及检测器设备状态报警信息(如无视频源输入、CPU 温度过高、CPU占用超过95%、CPU风扇转速过低、系统温度过高、摄像机位置移动等其他报警信息。
* 以下文档中所用的时间如无特殊说明,都是time_t类型,表示从1970年1月1日0时到指定时间所经历的秒数(格林威治时间)。
* 以下文档中所用的序列号,是每个检测器从1开始计数一直累加,直到40亿(UINT32的取值范围)再回1重来。
注意检测器是将序列号保存下来了,以确保因为停电或重启后序列号不会重复。
控件支持函数列表:1.ULONG CVideoMonitorCtrl::VMInit(LPCTSTR ip)方法说明:OCX控件初始化参数:IP为字符串返回值:0:初始化失败,1:初始化成功2.void CVideoMonitorCtrl::DestroyObj(void)方法说明:释放OCX控件参数:NULL返回值:NULL控件回调函数列表:1.GetCarNumLog(var) 返回检测器车牌信息[0]//识别车牌时间(秒)[1]//车牌文本[2]//车牌类型兰色、黑色、黄色、白色等[3]//车辆类型小车,中车,大车,其它车型[4]//车身颜色:白,:银,:黑,:红,:紫,:蓝,:黄,:绿,:褐,:粉红,:灰色,:未知[5]//车速[6]//行驶方向: 从东到西,: 从西到东,3: 从南到北,4: 从北到南[7]//厂商标志[8]//车型细分:大型货车;2:大型客车;3:中型客车;4:小型客车;5两轮车;其他[9]//车牌结构(:单行;:双行;其他)[10]//违章类型(0:未发生违法行为,1:闯红灯;2: 违章停车;3: 禁止左拐;4: 禁止右拐;5: 禁止前行;6: 逆行;7: 变道;8: 禁止行驶,:压线;:其他)2. GetCarEventLog (var) 返回检测器事件信息[0]//事件开始时间(秒)[1]//事件结束时间(秒)[2]//事件代码 1车辆停驶 2车辆逆行 3遗弃物 4行人横穿 5车辆慢行 6车辆超速 7交通拥堵 8违章变道 9行人停留 a机动车出现 b出现 c闯红灯 d行人出现 e非机动出现[3]//车辆类型(1小车,中车,大车,非机动车,行人) (3月日加)[4]//车身颜色(3月日加)[5]//车速(3月日加)[6]//车型细分:大型货车;2:大型客车;3:中型客车;4:小型客车;5两轮车;其他。
如何实现ocx控件的注册
if ll—requiredbuffersize=0 or ll—requiredbuffersize〉255 then
//报错信息
else
ls—command = ″regsvr32 /s ″ + ″~″″ + ls—pathname + ″\myocx.ocx″ + ″~″″
方法三:在pb程序中实现
安装程序只需负责将ocx拷贝到相应路径下,pb程序必须可以得到这个路径,建议拷贝到windows系统目录或者与执行文件同目录下。
具体代码:
//首先定义api函数,如果ocx控件在与执行文件同目录下,使用getcurrentdirectory函数;如果ocx控件放在系统目录下,使用getsystemdirectory函数。
如何实现ocx控件的注册
Posted on 2009-09-03 22:05 S.l.e!ep.¢% 阅读(83) 评论(0) 编辑 收藏 引用 所属分类: InstallShield
为了扩展应用程序的功能,许多系统都使用了或多或少的activex控件,这些控件必须在系统中注册后才能够使用。所以分发powerbuilder应用程序时,必须将系统所使用到的这些activex控件一起分发到用户所使用的计算机上,并且注册它们,只有这样系统才能继续使用这些控件。
function setupregistry()
number nrootkey, nresult;
string szprogram, szcmdline, szmsg;
string szhkey;
string szkey, szclass, sznumname, sznumvalue;
//在pb应用(application)的open事件,假设ocx控件在windows系统目录下。
请简述注册表结构
请简述注册表结构
注册表是Windows操作系统中的一个数据库,用于存储和管理系统的配置信息。
注册表的结构可以简述为以下几个主要部分:
1. 键(Key):注册表的最高层级单位,类似于文件夹。
键可以包含子键和值。
2. 子键(Subkey):位于键下面的子级单位,也类似于文件夹。
子键可以包含子键和值。
3. 值(Value):存储在键或子键中的数据。
每个值都有一个名称和相应的数据类型。
4. 数据类型(Data Type):指定值中存储的数据类型,例如字符串、整数、二进制数据等。
5. 根键(Root Key):注册表的最高级别。
Windows操作系统定义了5个根键,分别是HKEY_CLASSES_ROOT(文件关联和COM组件)、HKEY_CURRENT_USER(当前用户配置信息)、HKEY_LOCAL_MACHINE(本地计算机配置信息)、HKEY_USERS(所有用户配置信息)、
HKEY_CURRENT_CONFIG(当前硬件配置信息)。
6. 注册表编辑器(Registry Editor):Windows操作系统提供的用于浏览和编辑注册表的工具。
总的来说,注册表可以看作是一个树状结构,由根键、键、子键和值组成。
通过注册表,用户和系统可以访问和修改系统的配置信息,包括程序关联、系统设置、设备驱动等。
注册表的基本结构
注册表的结构在中文Windows 系统中,注册表采用“关键字”及其“键值”来描述登录项及其数据。
所有的关键字都是以“HKEY”作为前缀开头。
实际上,“关键字”是一个句柄。
这种约定使得系统及应用程序开发人员可以在使用注册表API函数时把它用于应用程序的开发之中。
为此,中文Windows 提供了若干个Win32 API 函数,以便在开发中文Windows 应用程序时添加、修改、查询和删除注册表的登录项。
在注册表中,关键字可以分为两类:一类是由系统定义的,通常称为“预定义关键字”;另一类是由应用程序定义的,安装的应用软件不同,其登录项也就不同。
1. HKEY_CLASSES_ROOT该主关键字(或称为“根键”)包含了有关的OLE信息,以便在系统工作过程中实现对各种文件和文档信息的访问,如图1-4所示。
其具体的内容有已经注册的文件扩展名、文件类型、文件图标等。
2.HKEY_USERSPC用户都可以在这里设置自己的关键字和子关键字,根据当前登录的用户不同,这个关键字又可以指向不同的分支部分。
这个分支部分将映射到HKEY_CURRENT_USER主关键字中,用户根据个人爱好设置的诸如桌面、背景、开始菜单程序项、应用程序快捷键、显示字体、屏幕节电设置等信息均可以在这个关键字中找到。
该主关键字中的大部分设置都可以通过“控制面板”来修改,如果用户登录到系统中的信息没有预定义的登录项,则采用该关键字下面的“.Default”子关键字。
3.HKEY_CURRENT_USERHKEY_CURRENT_USER主关键字是一个指向HKEY_USERS结构中某个分支的指针,它包含当前用户的登录信息,实际上它就是HKEY_USERS\.Default下面的一部分内容。
如果在HKEY_USERS\.Default下面没有用户登录的其他内容,那么这两个主关键字包含的内容是完全相同的。
4.HKEY_LOCAL_MACHINE该主关键字包含了本地计算机(相对网络环境而言)的硬件和软件的全部信息,如图1-9所示。
ocx控件注册方法
ocx控件注册方法OCX(Ole Control Extension)控件是一种用于创建可重用的二进制模块的技术。
它可以轻松地将功能嵌入到Windows应用程序中,并且允许其他应用程序通过标准化接口进行调用。
注册OCX控件是将其正确安装并引入Windows系统,以便其他应用程序可以使用的关键步骤。
下面是有关OCX控件注册方法的参考内容。
1. 注册OCX控件要将OCX控件注册到Windows系统中,可以使用“regsvr32”命令。
在开始菜单的搜索栏中键入“cmd”,并以管理员身份运行命令提示符。
然后,使用以下命令来注册OCX控件:```regsvr32 <ocx文件路径>```确保将`<ocx文件路径>`替换为实际的OCX文件路径。
例如:```regsvr32 C:\Windows\System32\example.ocx```运行命令后,会显示一个对话框,确认OCX控件是否成功注册到系统中。
2. 注销OCX控件如果需要从Windows系统中注销OCX控件,可以使用以下命令:```regsvr32 /u <ocx文件路径>```同样,确保将`<ocx文件路径>`替换为实际的OCX文件路径。
例如:```regsvr32 /u C:\Windows\System32\example.ocx```注销OCX控件后,将无法再在其他应用程序中使用它。
3. 解决注册问题在注册OCX控件时,可能会遇到一些问题。
以下是一些常见的问题及其解决方法:- 缺少依赖文件:有时,OCX控件可能依赖于其他文件。
在注册之前,请确保将所有依赖文件复制到相应的目录中。
- 权限问题:要注册OCX控件,需要管理员权限。
如果您没有权限,请尝试以管理员身份运行命令提示符。
- 文件路径错误:确保提供了正确的OCX文件路径,并且文件实际上存在于指定路径中。
4. 兼容性问题注册OCX控件的过程中,可能会遇到与Windows版本和位数不兼容的问题。
OCX控件注册
打开软件时提示错误如图
双击打开Ocx控件。
提示注册成功则说明无需再注册,不提示就需要手动注册。
注册操作:首先找到目的控件,选择打开方式,选择路径C:\WINDOWS\system32 \ regsvr32.exe 打开。
1.日历控件CnCalendar.ocx。
先找到日历控件(本公司程序和数据安装在D盘),一般在可执行文件的同一目录。
2.图片控件AutoVueX.ocx 。
(软件进去后,点击没反应也是提示
安装图片控件)。
先找到图片控件(本公司程序和数据安装在D盘),
在桌面上找到Xundaerp图标右击“属性”,点击“查找目标”。
在AutoVue文件夹下,找到AutoVue控件图片双击打开。
如图显示(注册成功的会提示已注册成功,不成功弹出打开方式的对话框)
图片控件
“浏览”--选择路径C:\WINDOWS\system32 \ regsvr32.exe 打开
注:始终使用选择。
处要勾选。
3.如果是win7及以上系统注册控件时提示注册失败,则用以下方式注册:
开始菜单-附件-找到“命令提示符”,右键已管理员身份运
行。
在里面输入regsvr32 D:\xundasoft\CnCalendar.ocx (注意控件的路
径不能有中文和空格) 然后回车即可。
注册表的逻辑结构
注册表的逻辑结构这里谈的注册表的组织结构是指注册表在注册表编辑器中所展示的结构体系,这也是普通用户对注册表最直观的认识。
这种直观的结构体系也被称为注册表的逻辑结构。
图1注册表逻辑结构中最基本的是主键、子键、键值项以及键值(如图1)。
它们是按照分级的方式来管理和组织的。
首先是最底层的根键,每个根键下有若干子键,每个子键下又可以有若干(一个或多个)子键,子键下可以有一个或多个键值项和键值。
如图2显示的是注册表的逻辑组织结构:图2层次说明根键注册表中最底层的键,类似与磁盘上的根目录。
在Windows注册表逻辑结构中,有以下六个根键:HKEY_CLASSES_ROOTHKEY_CURRENT_USERHKEY_LOCAL_MACHINEHKEY_USERSHKEY_CURRENT_CONFIGHKEY_DYN_DATA(仅Windows 98)子键子键位于根键下,又可以嵌套于其他子键中。
它类似于磁盘上看到的目录(文件夹)。
在六个根键中,有若干个子键,而每个子键中又可以嵌套成千上万的子键。
键值项与键值在每个根键和子键下,可以有若干键值项和键值,这类似于磁盘上根目录和子目录里的文件和文件内容。
这里需要说明的是,在Windows 98系统的注册表编辑器中称子键为“主键”,实际上这都是相对来说的,这好比在磁盘上,一个目录A如果在另一目录B下,那么目录A就叫子目录,而目录B相对根目录来说,还是叫子目录。
而在注册表中也是这样的。
所以作为本书的约定之一,就是把所有的这些容易混淆的东西都叫一个名字——子键。
实际上,在注册表编辑器中,不同操作系统对注册表项目的名称称谓是不同的。
注册表编辑器中显示的分层次的逻辑结构类似于Windows文件管理器中所显示的分层次的文件夹结构。
每个根键以“HKEY_”开头,用来指明这个键是唯一的,称作句柄。
HKEY 包含一个或者多个子键,每个子键都可能包含其他子键和键值项、键值。
子键和键值项的名字可以包含可显示的字母,包括空格、下划线、字母以及符号,但是不能包含(\)。
