Good morning Dale and Mr. Arnold.
I basically agree with Mr. Arnold that this issue might be caused by
"Virtualization" in Vista. Mark Russinovich had a good presentation about
UAC and "Virtualization" at
http://www.microsoft.com/emea/spotlight/sessionh.aspx?videoid=360.
Another possible cause is that the COM component was written in .NET
because I once saw several cases where .NET COM component does not appear
in COM tab. Dale, I will focus on "Virtualization" in this reply. If you
COM component was indeed written in .NET, please let me know, and I will do
more researches on that focus in the next reply.
"Virtualization" was introduced into Vista for backwards compatibility.
Many pre-Vista softwares run as a full admin privilege and write to
C:\Windows\, C:\Program Files\ or HKLM/HKCR registry at ease, however Vista
(UAC on) does not allow this kind of operation without elevation. In order
that these pre-Vista applications are still able to run in Vista without a
complete re-design, Vista provides the "Virtualization" feature to
transparently redirect the legacy program's operations on C:\ dir or HKLM
reg to the user profile folder or HKCU. These redirections are only visible
to the legacy app with "Virtualization" turned on. Non-legacy programs
(e.g. Visual Studio) are blind to it and regard C:\ dir and the redirection
folder in the user profile as two different places. Therefore, this can
possibly explain the symptom you see: an app (I guess it's an pre-Vista
app) is able to consume a COM component, but Visual Studio cannot recognize
it in the "Add Reference" dialog/"COM" tab.
Apart from the file-system redirection for the C:\Windows\ and C:\Program
Files directories mentioned by Mr. Arnold. The registry redirection of the
COM component may also be the reason. For example, the COM component might
be installed by a legacy installer (whose Virtualization is turned on), and
its registry keys are written to the
HKEY_CURRENT_USER\Software\Classes\VirtualStore\... instead of HKCR.
Dale, may I suggest that you check the following points on your side?
1. Check whether "Virtualization" is turned on for the app that can consume
the COM component.
You can do this by starting the app, and Task Explorer. In Task Explorer,
go to View menu -> Select Columns and check "Virtualization". Then find the
app's process and see whether its "Virtualization" is "Enabled". If yes, I
think this issue is very likely to be caused by "Virtualization".
2. Try to locate the COM component's DLL to see whether it's in the User
Profile folder or not.
Per-user virtual root: %UserProfile%\AppData\Local\VirtualStore
If the COM dll is in a sub folder of the above location, it means that the
file system Virtualization is redirecting the DLL.
3. Try to locate the COM component's registry key.
You can search the ProgID in regedit.exe. If the search result is located
under HKEY_CURRENT_USER\Software\Classes\VirtualStore\... instead of
HKCR\CLSID\{...}, it means that the registry Virtualization is redirecting
the registry key of the component.
Please spend some time on verifying the above three points. The fix is
basically to move the COM dll to the right location and register the COM
component again with the elevated command "regsvr32".
Regards,
Jialiang Ge (
[email protected], remove 'online.')
Microsoft Online Community Support
Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
(e-mail address removed).
==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/en-us/subscriptions/aa948868.aspx#notifications.
Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://support.microsoft.com/select/default.aspx?target=assistance&ln=en-us.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.