问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

如何做一个标记为安全的ACTIVEX控件

发布网友 发布时间:2022-04-29 14:06

我来回答

1个回答

热心网友 时间:2023-10-09 20:40

1.添加辅助函数
控件的基本结构中含有xxApp,xxCtrl,xxPropPage三个类。找到xxApp的头文件,添加三个辅助函数。
// Helper functionto create a component category and associated
// description
HRESULT CreateComponentCategory(CATIDcatid, WCHAR* catDescription);
// Helper functionto register a CLSID as belonging to a component
// category
HRESULTRegisterCLSIDInCategory(REFCLSID clsid, CATID catid);
// Helper functionto unregister a CLSID as belonging to a component
// category
HRESULT UnRegisterCLSIDInCategory(REFCLSID clsid, CATIDcatid);
找到xxApp的实现文件,添加三个辅助函数的实现。
// Helper functionto create a component category and associated
// description
HRESULTCreateComponentCategory(CATID catid, WCHAR* catDescription)
{
ICatRegister*pcr = NULL ;
HRESULThr = S_OK ;
hr= CoCreateInstance(CLSID_StdComponentCategoriesMgr,
NULL,
CLSCTX_INPROC_SERVER,
IID_ICatRegister,
(void**)&pcr);
if (FAILED(hr))
return hr;
// Make sure the HKCR/ComponentCategories/{..catid...}
// key is registered
CATEGORYINFOcatinfo;
catinfo.catid= catid;
catinfo.lcid= 0x0409 ; // english
// Make sure the provided description is nottoo long.
// Only copy the first 127 characters if itis
int len = wcslen(catDescription);
if (len>127)
len= 127;
wcsncpy(catinfo.szDescription,catDescription, len);
// Make sure the description is nullterminated
catinfo.szDescription[len]= '/0';
hr= pcr->RegisterCategories(1, &catinfo);
pcr->Release();
return hr;
}
// Helper functionto register a CLSID as belonging to a component
// category
HRESULTRegisterCLSIDInCategory(REFCLSID clsid, CATID catid)
{
// Register your component categoriesinformation.
ICatRegister*pcr = NULL ;
HRESULThr = S_OK ;
hr= CoCreateInstance(CLSID_StdComponentCategoriesMgr,
NULL,
CLSCTX_INPROC_SERVER,
IID_ICatRegister,
(void**)&pcr);
if (SUCCEEDED(hr))
{
// Register this category as being"implemented" by
// the class.
CATIDrgcatid[1] ;
rgcatid[0]= catid;
hr= pcr->RegisterClassImplCategories(clsid, 1, rgcatid);
}
if (pcr != NULL)
pcr->Release();
return hr;
}
// HRESULTUnRegisterCLSIDInCategory - Remove entries from the registry
HRESULTUnRegisterCLSIDInCategory(REFCLSID clsid, CATID catid)
{
ICatRegister*pcr = NULL ;
HRESULThr = S_OK ;
hr= CoCreateInstance(CLSID_StdComponentCategoriesMgr,
NULL,CLSCTX_INPROC_SERVER, IID_ICatRegister, (void**)&pcr);
if (SUCCEEDED(hr))
{
// Unregister this category as being"implemented" by the class.
CATIDrgcatid[1] ;
rgcatid[0]= catid;
hr= pcr->UnRegisterClassImplCategories(clsid, 1, rgcatid);
}
if (pcr != NULL)
pcr->Release();
return hr;
}
2.定义GUID
需要定义两个GUID用来注册控件安全性。
const CATIDCATID_SafeForScripting = {0x7dd95801,0x9882,0x11cf,{0x9f,0xa9,0x00,0xaa,0x00,0x6c,0x42,0xc4}};
const CATIDCATID_SafeForInitializing = {0x7dd95802,0x9882,0x11cf,{0x9f,0xa9,0x00,0xaa,0x00,0x6c,0x42,0xc4}};
在控件自动注册完成后,可以在注册表的如下地方看到上面的两个GUID。
HKEY_CLASSES_ROOT/CLSID/{"your controlsGUID"}/Implemented
Categories/{7DD95801-9882-11CF-9FA9-00AA006C42C4}
HKEY_CLASSES_ROOT/CLSID/{"your controls GUID"}/Implemented
Categories/{7DD95802-9882-11CF-9FA9-00AA006C42C4}
同时需要定义要注册为安全的CLSID。
控件有四个UUID,这里我们需要将xxCtrl的UUID注册成为安全的CLSID,因为我们控件的主体功能是在这个类中实现的。
const GUIDCDECL BASED_CODE _tlid =
{ 0x7DE84B6C,0x9969, 0x4DE0, { 0xBE, 0x25, 0xC6, 0xC0, 0x63, 0x20, 0xA3, 0x70 } };
const WORD_wVerMajor = 1;
const WORD_wVerMinor = 0;
const CATIDCLSID_SafeItem =
{0x4e586c5a,0xfd41, 0x4e4c, {0xb6, 0x6d, 0x63, 0xf1, 0x10, 0xc8, 0xc4, 0xb9}};
这里的CLSID_SafeItem就是xxCtrl的UUID。
3.修改注册代码
//DllRegisterServer - 将项添加到系统注册表
STDAPIDllRegisterServer(void)
{
/*这里是原来的注册代码
OLD
AFX_MANAGE_STATE(_afxMoleAddrThis);
if(!AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid))
returnResultFromScode(SELFREG_E_TYPELIB);
if(!COleObjectFactoryEx::UpdateRegistryAll(TRUE))
returnResultFromScode(SELFREG_E_CLASS);
returnNOERROR;*/

//NEW下面是新的注册代码
AFX_MANAGE_STATE(_afxMoleAddrThis);
if (!AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid))
return ResultFromScode(SELFREG_E_TYPELIB);
if (!COleObjectFactoryEx::UpdateRegistryAll(TRUE))
return ResultFromScode(SELFREG_E_CLASS);
if (FAILED( CreateComponentCategory(
CATID_SafeForScripting,
L"Controls that are safelyscriptable") ))
return ResultFromScode(SELFREG_E_CLASS);
if (FAILED( CreateComponentCategory(
CATID_SafeForInitializing,
L"Controls safely initializable frompersistent data")))
return ResultFromScode(SELFREG_E_CLASS);
if (FAILED( RegisterCLSIDInCategory(
CLSID_SafeItem,CATID_SafeForScripting) ))
return ResultFromScode(SELFREG_E_CLASS);
if (FAILED( RegisterCLSIDInCategory(
CLSID_SafeItem,CATID_SafeForInitializing) ))
return ResultFromScode(SELFREG_E_CLASS);
return NOERROR;
}
//DllUnregisterServer - 将项从系统注册表中移除
STDAPIDllUnregisterServer(void)
{
/*
OLD这里是原来的代码
AFX_MANAGE_STATE(_afxMoleAddrThis);
if(!AfxOleUnregisterTypeLib(_tlid, _wVerMajor, _wVerMinor))
returnResultFromScode(SELFREG_E_TYPELIB);
if(!COleObjectFactoryEx::UpdateRegistryAll(FALSE))
returnResultFromScode(SELFREG_E_CLASS);
returnNOERROR;*/

//NEW下面是新的代码
HRESULThr;
AFX_MANAGE_STATE(_afxMoleAddrThis);
// Remove entries from the registry.
hr=UnRegisterCLSIDInCategory(CLSID_SafeItem,
CATID_SafeForInitializing);
if (FAILED(hr))
return hr;
hr=UnRegisterCLSIDInCategory(CLSID_SafeItem,
CATID_SafeForScripting);
if (FAILED(hr))
return hr;
if (!AfxOleUnregisterTypeLib(_tlid, _wVerMajor, _wVerMinor))
return ResultFromScode(SELFREG_E_TYPELIB);
if (!COleObjectFactoryEx::UpdateRegistryAll(FALSE))
return ResultFromScode(SELFREG_E_CLASS);
return NOERROR;
}
到此完成了控件的安全标记。
如何做一个标记为安全的ACTIVEX控件

1.添加辅助函数 控件的基本结构中含有xxApp,xxCtrl,xxPropPage三个类。找到xxApp的头文件,添加三个辅助函数。// Helper functionto create a component category and associated // description HRESULT CreateComponentCategory(CATIDcatid, WCHAR* catDescription);// Helper functionto register a CLSID...

aippt自动生成工具

随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图、条形...

如何将 MFC ActiveX 控件作为安全标记为脚本和初始化

第一个涉及控件实现 IObjectSafety 接口,对于想要更改其行为,并成为"安全"; 如果在一个 Internet 浏览器的上下文中运行的控件非常有用。第二个涉及到修改控件的 DllRegisterServer 函数来标记该控件在注册表中的"安全"。本文介绍了这些方法中的第二个。 实现 IObjectSafety 接口在第一个方法是在 Int...

请将IE安全设置不允许不运行未标记为安全的activex控件启用怎么办...

1、点击Windows开始菜单,输入“ie”后Windows会自动搜索出Internet Explorer,点击打开IE浏览器。2、打开IE浏览器后,点击右上角的设置图标,在弹出菜单中点击“Internet选项”打开Internet选项对话框。3、在Internet选项对话框,点击“安全”切换到安全设置界面。4、然后点击“自定义级别”打开“安全设置-Inte...

"ActiveX 控件和插件"该如何设置?

在选项中的设置与安全级别有关,如果安全级别是“中”是这样设置的。打开IE选工具/Internet 选项/安全/自定义级别/设置中 ActiveX控件自动提示“禁用”。 对标记为可安全执行脚本ActiveX控件执行脚本“启用” 对没有标记为安全的ActiveX初始化和脚本运行“禁用” 下载未签名的ActiveX控件“禁用” 下...

如何设置安全允许安装ActiveX控件

一般的控件都不是好东西,不过你确实想装.如果你是xp 的,打开IE浏览器,上面的工具栏里有internet选项,点击,然后选中第二个安全选项,在你看见的第一个地球,就是internet的下面,有个自定义选项,你点开它,里面有许多关于控件的选择,你可以自己考虑!

一个或多个 ActiveX 控件无法显示

对标记为可安全执行脚本的ActiveX控件执行脚本”设置为“启用 之后应用-确定退出后重起IE或QQ 如果还是不行可以重启 开机时 按住F8进入安全模式 点开始 运行 输入msconfig找到启动要运行的程序 只留下ctfmon正常起动在进入这里 在勾选一个程序 在起动 如没有情况继续 直到处现情况就知道是哪个程倒乱了 ...

...提示启用对未标记安全的ActiveX 控件进行初始化和脚本运行,按要求操 ...

在里面这样选 1.把 ActiveX 控件自动提示选择为禁用 2.把 对没有标记为安全的ActiveX控件进行初始化和脚本运行选择为禁用 3.下载未签名的ActiveX控件选择为启用。其他和ActiveX相关的自己再看看,这样一般就可以运行了。但是如果这样做了ActiveX程序可以直接操作你的电脑,有点危险哦。

如何在浏览器中设置允许ActiveX控件和插件运行?

对于如何启用ActiveX控件和插件,你可能会遇到一些困惑。首先,让我们明确一下,启用ActiveX意味着允许浏览器运行那些可能提供额外功能但被浏览器默认阻止的组件。如果浏览器出于安全考虑屏蔽了ActiveX插件,解决方法是进入浏览器设置: 在工具菜单中点击IE选项,然后选择安全选项卡。在下拉的自定义级别中,找到并...

三种方法解决IE已经阻止此站点以不安全的方式使用ActiveX控件

1. 修改安全级别:- 打开IE浏览器。- 点击“工具”菜单,选择“Internet选项”。- 切换到“安全”标签页,将所有安全区域的级别设置为默认级别。- 同时,在“隐私”标签页中将设置调至最低。2. 启用未标记为安全的ActiveX控件:- 在IE的“工具”菜单中选择“Internet选项”。- 切换到“安全”标签页...

一个或多个activex控件无法显示,已按网上说的设置了Internet选项_百度知...

1、打开IE浏览器,点击右上角“工具”,在弹出菜单栏点击【Internet选项】2、进入Internet属性对话框,点击上方【安全】选项 3、进入“安全”界面,点击下方【自定义安全级别】4、在安全设置中,找到【ACTIVEX控件和插件】【对标记为可安全执行脚本的ActiveX控件执行脚本】将其 启用,然后点击下方确定。使用...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
广西浦北县民政局今年春节几时才放假? 怎样在Excel中画柏拉图的二八线? 郎酒鉴定真假要去哪里,鉴定方法分享 郎酒酒瓶有收藏价格吗,收藏的注意事项有哪些?(郎酒瓶子值钱吗) 郎酒酒瓶有收藏价值吗,收藏酒瓶要注意什么(郎酒瓶子值钱吗) 《战舰少女R》平海值得练吗介绍_《战舰少女R》平海值得练吗是什么_百... 黄铜镀金和钛钢镀金有啥区别 北部湾大学研究生有哪些专业 北部湾大学的研究生文评在全国的含金量重吗 极品飞车9追击的圆圈是 怎样可以有效驱蚊 DELL 笔记本电脑x15-66094到底有没有这个型号?搜半天都没有关于它的信息,希望知道的人回答下 谢谢 java代码错误,请求帮助。 动漫乒乓怎么下载? CASIO EDIFICE EF-524 这个如何调整日期呀? 战略用英语怎么翻译 任东的代表性论著 巨蟹座今日财运打扑克牌方位 淘宝美工好学吗 财神正西,打麻将坐什么位置? 我是1982年11月17号出生的,我的命运如何? - 信息提示 今天麻将哪个方位好? 删除的视频如何恢复 今天打麻将坐哪个方向会赢钱? 苏州期货从业资格证有什么用? 准备50W做金融投资,是做股票好还是期货好?在苏州哪个公司有实力? 今天的财神正位是那个方向我打扑克 中华婪步甲是蟑螂吗? 苏州哪家期货公司开户手续费最低 我这个能算土耳其安哥拉猫么? 求DELL360台式机声卡驱动 防蚊子的最好办法多不多,用什么电蚊液驱蚊不会过敏? 偶家猫猫白色长毛,眼睛纯蓝.但是头上有一条黑色纹理.是什么猫?? 怎样能更好的避免蚊子? 更新了ATI后可以看视频但是魔兽争霸全屏一打开就死机黑屏 驱蚊液一般开多长时间 dell笔记本玩游戏上边的F1-9键怎么样设值才能用呢 华为畅享5桌面电话的图标怎么不见了怎么办? 2/3-5/9。 2/3减5/9等于分数几 从别人家无线路由器接到自己家怎么设置他家无线路由器 (2/3-5/9*3/8)*11/16等于多少? 从别人家路由器拉来网线:怎么设置路由器上网: 4/8+2/3-5/9怎么计算计算过程是怎么样的? 我在别人家的路由器上拉的网线 我想接个无线路由器用手机和电脑上网怎么设置 5/9+2x=2/3怎么解要过程 从别人路由器上拉来的网线自己再连一个无线路由器该怎么设置啊 2/3-4/9-5/9等于几分之几? 2/3比9/5的比值是多少竖式?
  • 焦点

最新推荐

猜你喜欢

热门推荐