在微软的Vista操作系统中,为了提高安全性IE7运行于保护模式下, 这种模式以高度受限制的权限运行IE进程,也就说IE进程本身的权限很低。因此编写的插件如果使用高完整性资源则会失败,例如修改HKEY_LOCAL_MACHINE下的注册表项,为此微软提供了COM Elevation Moniker。COM Elevation Moniker允许运行在受限用户(LUA)的应用程序激活一个提升权限的COM对象,即在Vista系统上会弹出UAC提示框让用户提升权限(UAC打开状态下)。
要创建提升权限的COM类需要做的工作:
1. COM类必须在注册表中有权限提升支持标识,不论你的COM是DLL还是EXE,都必须得有AppID,格式如下:
HKEY_LOCAL_MACHINE/Software/Classes/CLSID/{CLSID}/Elevation/Enabled = 1
HKEY_LOCAL_MACHINE/Software/Classes/CLSID/{CLSID}/LocalizedString = <displayname>
HKEY_LOCAL_MACHINE/Software/Classes/CLSID/{CLSID}/AppID = {AppID}
HKEY_LOCAL_MACHINE/Software/Classes/AppID/{AppID}/ DllSurrogate= <空字符串>
说明:Enabled为DWORD值,displayname为弹出的UAC中提示的文字。
2. 使用权限提升COM类的客户端程