OCX已加载,但对dllregisterserver的调用失败,错误代码0X80040200

yimao_44 2014-06-23 05:52:53
写了个静态库供ocx调用

int DecyptFle(wchar_t *lpFileName,wchar_t **strUserID,wchar_t **moduleid,wchar_t **devicename)
{
// if(access((const char *)lpFileName,0) == -1) // [6/23/2014 ZhangcH]
// {
// return -1; //文件不存在
// }
memset(hexCiphertextAnyLength,0,16384);
memset(bitsCiphertextAnyLength,0,32768);
memset(szCiphertextData,0,8192);
memset(readRes,0,32768);
return 0;
// CFile fileRead;
// if(!fileRead.Open((LPCTSTR)lpFileName,CFile::modeRead))
// {
// // AfxMessageBox(_T("授权文件路径不正确!"));
// return -2; //文件存在 但是打开失败
// }
// fileRead.Read(readRes,fileRead.GetLength());
// fileRead.Close();
//
// yxyDES.InitializeKey("wintone",0);
// yxyDES.InitializeKey("thwintoneinfo",1);
//
// yxyDES.DecryptAnyLength(szCiphertextData,ConvertOtherFormat2Ciphertext(readRes),0);
// yxyDES.EncryptAnyLength(yxyDES.GetPlaintextAnyLength(),strlen(yxyDES.GetPlaintextAnyLength()),1);
// yxyDES.DecryptAnyLength(yxyDES.GetCiphertextAnyLength(),strlen(yxyDES.GetCiphertextAnyLength()),0);
//
// lszRes = yxyDES.GetPlaintextAnyLength();
//
// replaceDcy(lszRes,'#','\n');
// replaceDcy(lszRes,'@','\r');
// replaceDcy(lszRes,'!','\0');
// size_t len = strlen(lszRes) + 1;
// size_t converted = 0;
// wchar_t *wStrRes = NULL;
// wStrRes=(wchar_t*)malloc(len*sizeof(wchar_t));
// // mbstowcs_s(&converted, wStrRes, len, lszRes, _TRUNCATE);
// mbstowcs(wStrRes, lszRes, len);
//
// int nPos = 0;
// int times = 0;
// while(wStrRes[nPos] != L'\0')
// {
// if (wStrRes[nPos] == L'=')
// {
// times++;
// switch(times)
// {
// case 1:
// {
// int nDest = 0;
// int nSource = nPos + 1;
// while (TRUE)
// {
// if (wStrRes[nSource] == L'\r')
// {
// (*strUserID)[nDest] = L'\0';
// break;
// }
// (*strUserID)[nDest] = wStrRes[nSource];
// nDest++;
// nSource++;
// }
// break;
// }
// case 2:
// {
// int nDest = 0;
// int nSource = nPos + 1;
// while (TRUE)
// {
// if (wStrRes[nSource] == L'\r')
// {
// (*moduleid)[nDest] = L'\0';
// break;
// }
// (*moduleid)[nDest] = wStrRes[nSource];
// nDest++;
// nSource++;
// }
// break;
// }
// case 3:
// {
// int nDest = 0;
// int nSource = nPos + 1;
// while (TRUE)
// {
// if (wStrRes[nSource] == L'\0')
// {
// (*devicename)[nDest] = L'\0';
// break;
// }
// (*devicename)[nDest] = wStrRes[nSource];
// nDest++;
// nSource++;
// }
// break;
// }
//
// }
// }
// nPos++;
// }
// free(wStrRes);
// return 0 ; //解密成功
}


主要是调用这个函数

在ocx用调用的那块被我简化成
TCHAR szPath[MAX_PATH] = {0};
GetModuleFileName(AfxGetInstanceHandle(), szPath, MAX_PATH);
//GetCurrentDirectory(MAX_PATH,szPath);
wchar_t* wchPos = wcsrchr(szPath,_T('\\'));
wcscpy(wchPos,L"\\wtlicense.dat");
wchar_t* szModuleID = new wchar_t[256];
wchar_t* szDeviceInfo = new wchar_t[256];
wchar_t* szUserID = new wchar_t[256];
wchar_t* szDeviceInfoArry[64];
int nDeviceInfoCount = 0; // int res ;
res = DecyptFle(szPath,&szUserID,&szModuleID,&szDeviceInfo);
if(res != 0)
{
return FALSE;
}

可以编译 就是不能注册 在release版本下,因为debug版本就不掉这个DecyptFle这个函数了,
只要把DecyptFle这个代码屏蔽掉 就能注册


求大神了 为啥 我找了好久也不知道为啥 已经用管理员权限试过了 不行

操作希望win7 3位
...全文
2812 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
只是空想家 2014-11-27
  • 打赏
  • 举报
回复
程序里调用怎么用管理员权限运行?
一枪尽骚丶魂 2014-11-03
  • 打赏
  • 举报
回复
怎么没人呢,一般都是权限问题。使用管理员权限运行就OK了
yimao_44 2014-06-23
  • 打赏
  • 举报
回复
自己定一下 丿 up up up up

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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