I'm working on a web app that needs an ActiveX control to function. It installs just fine when the user has admin privileges, but fails to load otherwise. Is this by design and if so, is this documented somewhere? (preferably MSDN)
问题:
回答1:
Actually, none of these answers are completely correct; if you install an ActiveX control in a per-user basis it will work just fine without Administrative privileges, regardless of the group that the user is in. Bascially this involves installing it to HKEY_CURRENT_USER instead of HKEY_LOCAL_MACHINE.
Depending on what your activex control is written in this may be easy or it may be hard to change; with ATL 9 it's pretty easy, as you just have to call a function:
AtlSetPerUserRegistration(perUser);
FireBreath does this by default so that admin privileges aren't neccesary to install the plugin/control; it also has a workaround for older versions of ATL (ATL 9 is VS 2008). This is all C++, so if your control is written in something else I don't know how to fix it, but that should at least get you started.
回答2:
Complex answer: Yes. The user's account needs to be part of a group that affords the privelege of registering libraries (dll) or controls (ocx) or needs to be directly assigned the privelege.
Simple answer: No. Only accounts with the administrative privelege to install OCXs or DLLs can install Active-X controls (by default those accounts are part of the Administrators, Domain Administrators or Power Users groups).
Edit: I guess this question was changed... Yes, this is by design.
回答3:
You can if using Vista with IE8.
http://msdn.microsoft.com/en-us/library/dd433049%28VS.85%29.aspx