Deployment ActiveX控件的非管理员注册
根据,可以在当前用户下注册activeX(安装期间不需要管理员权限)。 我编写了ATL项目(VS2008,本机),并添加了一些什么都不做的ATL控件 我创建了一个inf文件:Deployment ActiveX控件的非管理员注册,deployment,internet-explorer-8,activex,atl,registration,Deployment,Internet Explorer 8,Activex,Atl,Registration,根据,可以在当前用户下注册activeX(安装期间不需要管理员权限)。 我编写了ATL项目(VS2008,本机),并添加了一些什么都不做的ATL控件 我创建了一个inf文件: [version] signature="$CHICAGO$" AdvancedINF=2.0 [Add.Code] Batman.dll=Batman.dll [Deployment] InstallScope=user [Batman.dll] file-win3
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
Batman.dll=Batman.dll
[Deployment]
InstallScope=user
[Batman.dll]
file-win32-x86=thiscab
clsid={2C10EC82-2BF3-4ED5-8AFC-E5146C672B3D}
FileVersion=1,0,0,1
RegisterServer=yes
将dll和inf添加到CAB中并对其进行签名。
我从简单html页面加载ActiveX
<OBJECT ID="sampleControl" CLASSID="CLSID:2C10EC82-2BF3-4ED5-8AFC-E5146C672B3D" CODEBASE="Batman.cab#Version=1,0,0,1"></OBJECT>
而且它无论如何都不会在当前用户下注册它
如果我指定InstallScope=machine,则加载activeX时没有问题
你知道该怎么做吗
谢谢试试这个,至少对我有用:
[Deployment]
InstallScope=user|machine
[Batman.dll]
file-win32-x86=thiscab
clsid={2C10EC82-2BF3-4ED5-8AFC-E5146C672B3D}
FileVersion=1,0,0,1
RegisterServer=yes
RedirectToHKCU=yes
使用VS2008附带的ATL版本,您可以通过以下方式完成此操作: AtlSetPerUserRegistration(真实) 在开始时在DllRegisterServer和DllUnregisterServer中调用它。如果您需要在vs2005或更早版本中执行此操作,则必须使用更可怕的黑客 下面是一个为您处理这两种方法的类的示例(取决于vs版本): 此处的示例用法如下:
我希望它能有所帮助我遇到了同样的问题,但最奇怪的是,Apache服务器没有问题,而Tomcat服务器没有问题 最后,我发现它也与Web服务器设置有关 您的Web服务器必须支持正确的mime类型映射。如果使用Tomcat进行测试,请将以下内容添加到web.xml:
<mime-mapping>
<extension>cab</extension>
<mime-type>application/vnd.ms-cab-compressed</mime-type>
</mime-mapping>
驾驶室
应用程序/vnd.ms-cab-compressed
谢谢,当我修改inf时,当我以非管理员身份登录并尝试访问加载ActiveX的页面时,如果我想为计算机或当前用户安装ActiveX,我会收到一个提示。即使我选择为当前用户安装,ActiveX也不会加载。我也无法在HD或注册表中找到它。。。您认为是否需要修改rgs文件或在HTML页面中添加任何内容?谢谢,我认为原因不在“非管理员”功能中。至少在我的例子中,修改INF文件就足够了。我没有碰任何其他文件。您可以尝试为所有用户安装它,只是为了测试。确保版本号相同(1,0,0,1!=1.0.0.1),确保在INF文件中使用正确的clsid。我发现尝试通过命令行手动注册我的DLL很有帮助,例如:regsvr32这会显示注册本身是否有效。