VB6作为标准用户在Windows Vista上安装

时间:2009-03-17 16:08:32

标签: vb6 windows-vista

我有一个VB6应用程序需要作为标准用户安装在Windows Vista上。使用Visual Studio 2005我创建了一个安装项目,将应用程序放在标准的用户安全位置或文件夹中。我还有一个我要安装的DLL并注册到用户应用程序数据文件夹。在VS'05中创建了Windows安装程序后,我使用msiinfo.exe将单词计数属性的第3位翻转,以便Vista在运行msi时不会提示管理员凭据。在尝试将dll注册到用户应用程序数据文件夹之前,应用程序安装没有任何问题。当它到达该点时,它会抛出一个错误,指出它无法为dll注册类型库。似乎安装程序没有权限将dll注册到users文件夹。它是否正确?我的理解是Vista只抱怨标准用户更新或更改影响机器所有用户的项目。有任何想法吗?思考?建议

6 个答案:

答案 0 :(得分:4)

您可以使用RegFree COM,而不是直接注册DLL文件。

这涉及为您的应用创建XML清单文件,因此Windows将在应用程序文件夹中查找您的DLL文件,而不是使用系统注册表来查找它们。

这意味着您的应用程序无需安装程序注册DLL即可正常运行。

这些链接有更多信息:

http://msdn.microsoft.com/en-us/magazine/cc188708.aspx

http://www.devx.com/vb/Article/32888/1954

您可以使用免费的Make My Manifest软件来创建所需的清单文件:

http://mmm4vb6.atom5.com/

答案 1 :(得分:4)

史蒂夫

我的建议是,如果你能够,使用regfree com / manifest文件而不是注册ocx / dll文件,正如你所提到的那样是一个基本用户帐户下的真正的苦差事。

您可以使用一个优秀的免费应用程序为您构建清单:http://mmm4vb6.atom5.com/

我们已经使用了几年,没有任何问题。

编辑 MMM网站已关闭。我看到here作者在托管时遇到了问题,并提供了另一个获取Make Make Manifest的位置 - download it here

答案 2 :(得分:1)

一般来说,我同意Joel Coehoorn在答案中所说的内容。

但是,了解注册表在这方面的工作原理,我可以建议您尝试手动将DLL注册到HKEY_CURRENT_USER\SOFTWARE\Classes,基本上重复regsvr32.exe对HKEY_LOCAL_MACHINE\SOFTWARE\Classes的处理。< / p>

这有点像黑客,也许它不起作用,但你可以试试。

答案 3 :(得分:0)

  • 免注册COM:MakeMyManifest已被充分利用。它是一个自动工具,用于为VB6项目创建清单:我自己没有尝试过。
  • DirectCOM是无注册表COM的替代方案。它也有粉丝,我还没试过。

编辑 MMM网站已关闭。我看到here作者在托管时遇到了问题,并提供了另一个获取Make Make Manifest的位置 - download it here

有一种半自动技术可以为无注册表的COM创建清单。您可以使用Visual Studio 2008创建清单(您可以使用Visual Basic Express Edition之类的免费版本)。然后手动进行一些编辑,使清单适合VB6使用。有关分步说明,请参阅此MSDN文章的this section - 忽略本文中有关ClickOnce的其余部分。

答案 4 :(得分:0)

Unattended Make My Manifest是MMM的翻版,可用于在自动构建中生成清单。它使用脚本文件添加依赖的COM组件。

答案 5 :(得分:-1)

注册DLL确实会影响所有用户(DLL全局注册),因此需要管理员权限。没有办法解决这个问题。

新编程环境的解决方案是不需要注册DLL即可使用。但是,由于vb6依赖于COM,你可能运气不好。