我有一个需要作为标准用户安装在 Windows Vista 上的 VB6 应用程序。我使用 Visual Studio 2005 创建了一个安装项目,该项目会将应用程序放置在标准的用户安全位置或文件夹中。我还有一个 dll,我想安装并注册到用户应用程序数据文件夹。在 VS'05 中创建 Windows 安装程序后,我使用 msiinfo.exe 翻转字数属性的第 3 位,以便 Vista 在运行 msi 时不会提示管理员凭据。应用程序安装没有任何问题,直到它尝试将 dll 注册到用户应用程序数据文件夹。当它到达那个点时,它会抛出一个错误,指出它无法为 dll 注册类型库。安装程序似乎无权将 dll 注册到用户文件夹。这样对吗?我的理解是,Vista 只提示标准用户更新或更改影响机器所有用户的项目。有任何想法吗?想法?建议?
最佳答案
您可以使用 RegFree COM,而不是直接注册您的 DLL 文件。
这涉及为您的应用程序创建一个 XML list 文件,因此 Windows 将在应用程序文件夹中查找您的 DLL 文件,而不是使用系统注册表来查找它们。
这意味着您的应用程序将正常运行,而您的安装程序无需注册 DLL。
这些链接有更多信息:
http://msdn.microsoft.com/en-us/magazine/cc188708.aspx
http://www.devx.com/vb/Article/32888/1954
您可以使用免费的 Make My Manifest 软件来创建您需要的 list 文件:
http://mmm4vb6.atom5.com/
关于作为标准用户在 Windows Vista 上安装 VB6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/654911/