Deployment ActiveX控件的非管理员注册

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

根据,可以在当前用户下注册activeX(安装期间不需要管理员权限)。 我编写了ATL项目(VS2008,本机),并添加了一些什么都不做的ATL控件

我创建了一个inf文件:

    [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这会显示注册本身是否有效。