控件注册,MSFLXGRD.OCX怎样自动注册?

w88ajfeng 2013-01-19 10:59:51
MSFLXGRD.OCX在有些电脑上是注册了的,有些电脑没有注册

那么问题来了。。
1)对xp系统,管理员账号下:用批处理
copy Msflxgrd.ocx %windir%\system32\
regsvr32 %windir%\system32\Msflxgrd.ocx /s
可以实现注册。
2)xp系统,非管理员账号:用上面批处理就实现不了了吗?怎样实现?

3)对win7系统64位,管理员账号:用
copy Msflxgrd.ocx %windir%\SysWOW64\
regsvr32 %windir%\SysWOW64\Msflxgrd.ocx /s
可以实现注册。用MFC又如何编写?(这个网上有)
4)对win7系统64位,非管理员账号:就实现不了。要开启管理员账号权限才行。用MFC如何实现?

那还有别的win2000,win2003,winvista等64位或32位系统,要怎么注册?对于每个系统都要区分,多少位系统都要判断吗?具体如何实现编写,详细点谢了~

已将全部分压在这问题上啦。希望大神帮下我~
...全文
1605 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zj0789 2013-12-05
  • 打赏
  • 举报
回复
好帖,留名~~~~~~~~~~~~
w88ajfeng 2013-01-20
  • 打赏
  • 举报
回复
引用 3 楼 sha_jinhao 的回复:
不同平台有所差异 lz还是具体分析吧! 注册OCX控件 BOOL CYourClass::RegistOcx() { HINSTANCE hLib = LoadLibrary("NTGraph.ocx"); //指定要注册的ocx文件的路径及文件名。 if (hLib == NULL) { ……
感谢你写了这么多。。关键不同系统要怎么处理?非管理员模式下就不能用的吧?
w88ajfeng 2013-01-20
  • 打赏
  • 举报
回复
这东西非管理员 不同平台下应该可以注册控件的吧。 像大型软件都可以。。。具体要用MFC代码来实现,就要开启管理员权限吧?
w88ajfeng 2013-01-20
  • 打赏
  • 举报
回复
我是自己写了一个小软件 里面用到了MSFLXGRD.OCX 在有些机子上运行不起来,才发现这东西需要注册。 而且不同系统 是否管理员模式注册都非常麻烦 有什么办法吗?cab包下下载过来可以直接注册吗
96掌门师兄 2013-01-20
  • 打赏
  • 举报
回复
你是用的cab包自动下载注册的还是自己用脚本去注册的,如果是IE的下载cab注册的话,win764之类,就应该至少用右键以管理员权限打开IE后再使用,这是微软的游戏规则你不用管,让用户这样用就行了
w88ajfeng 2013-01-20
  • 打赏
  • 举报
回复
MSFLXGRD.OCX是微软开发的,为什么还要让我们来注册!!! 权限设置:http://soft.zol.com.cn/271/2718681.html 在电脑上操作是:以管理员模式打开dos,输入net user administrator /active:yes 然后register一下,经过测试可以用的。 非管理员模式下如何注册控件,要用MFC代码来写呢?如何将上面转为mfc代码
jimette 2013-01-20
  • 打赏
  • 举报
回复
不同平台有所差异 lz还是具体分析吧! 注册OCX控件 BOOL CYourClass::RegistOcx() { HINSTANCE hLib = LoadLibrary("NTGraph.ocx"); //指定要注册的ocx文件的路径及文件名。 if (hLib == NULL) { MessageBox("不能载入OCX文件!"); return 0; } //获取注册函数DllRegisterServer地址 FARPROC lpDllEntryPoint; lpDllEntryPoint = GetProcAddress(hLib,"DllRegisterServer"); //调用注册函数DllRegisterServer if(lpDllEntryPoint!=NULL) { if(FAILED((*lpDllEntryPoint)())) { //MessageBox(Handle,"调用DllRegisterServer失败!","失败ing..",MB_OK); MessageBox("OCX注册失败!"); FreeLibrary(hLib); return 0; }; //MessageBox(Handle,"注册成功!","Reg",MB_OK); MessageBox("OCX注册成功!"); } else MessageBox("OCX注册失败!"); //MessageBox(Handle,"调用DllRegisterServer失败!","失败ing..",MB_OK); return 1; } 卸载控件 BOOL CYourClass::UnRegistOcx() { HINSTANCE hLib = LoadLibrary("NTGraph.ocx"); //指定要注册的ocx文件的路径及文件名。 if (hLib==NULL) { //MessageBox(Handle,"不能载入Dll文件!","失败ing..",MB_OK); MessageBox("不能载入OCX文件!"); return; } //获取注册函数DllRegisterServer地址 FARPROC lpDllEntryPoint; lpDllEntryPoint = GetProcAddress(hLib,"DllUnregisterServer");//注意这里是DllUnregisterServer。 //调用注册函数DllRegisterServer if(lpDllEntryPoint!=NULL) { if(((*lpDllEntryPoint)())) { //MessageBox(Handle,"调用DllUnRegisterServer失败!","失败ing..",MB_OK); MessageBox("调用DllUnRegisterServer失败!!!"); FreeLibrary(hLib); return; }; //MessageBox(Handle,"注销成功!","Unreg",MB_OK); MessageBox("OCX注销成功!"); } else //MessageBox(Handle,"调用DllUnRegisterServer失败!!!","结果",MB_OK); MessageBox("OCX调用DllUnRegisterServer失败!!!"); } 判断是否注册 BOOL CYourClass::IsRegistOcx() { HKEY hKey; BOOL bPresent; TCHAR szPath[_MAX_PATH]; DWORD dwRegType; DWORD cbData = sizeof szPath * sizeof TCHAR; if(RegOpenKeyEx(HKEY_CLASSES_ROOT,"ActiveX.ActiveXControl//Clsid",0,KEY_READ,&hKey)!=ERROR_SUCCESS) return false; else return true; //ActiveX.ActiveXControl为控件的名称和内部名称 如"NTGRAPH.NTGraphCtrl.1//CLSID" } 注册命令存放位置 注册代码应该写在“工程名.cpp”文件中定义的“工程名dlg dlg;”下面,如下 工程名dlg dlg;” if(!dlg.IsRegistOcx()) dlg.RegistOcx();//注册OCX控件
hdg3707 2013-01-20
  • 打赏
  • 举报
回复
LINUX下的C程序里有更改用户权限的命令,WINDOWS下不清楚有没有,估计不会有动态更改用户权限的命令.恐怕只能在WINDOWS下用超级用户账号登录然后再注册
oyljerry 2013-01-20
  • 打赏
  • 举报
回复
注册控件需要管理员权限,VSITA以后的OS,需要ADMIN权限,否则就要提示UAC
傻X 2013-01-20
  • 打赏
  • 举报
回复
引用 4 楼 w88ajfeng 的回复:
MSFLXGRD.OCX是微软开发的,为什么还要让我们来注册!!! 权限设置:http://soft.zol.com.cn/271/2718681.html 在电脑上操作是:以管理员模式打开dos,输入net user administrator /active:yes 然后register一下,经过测试可以用的。 非管理员模式下如何注册控件,要用MFC代……
注册的目的,是写路径进注册表,调用的时候就知道去哪里找你的OCX了。 楼上的都讲了方法。直接调用regsvr32那个exe也可以注册的。

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧