2012-02-29 48 views
0

我用一个很老的版本安装速成4的包装我的VB6应用我的问题。在XP上安装它,效果很好。但是,当我将它安装在Windows 7盒子上时,不使用“以管理员身份运行”,一切似乎都是只读的。我无法编辑INI文件,因为access is denied。该应用程序无法正常工作。这几乎就像它甚至无法访问该文件夹。它安装在默认的“程序文件”文件夹中。我卸载应用程序,使用“以管理员身份运行”选项重新安装,将捷径的兼容性设置为“以管理员身份运行”,并且一切正常。是否安装速成4或Windows 7时,引起我安装VB6应用

我的问题是这个东西在VB6继承了应用程序必须以管理员身份运行,或者是一个InstallShield问题?如果是InstallShield Express问题,最新版本的InstallSheild Express 2012是否会解决此问题?我宁愿用户不必担心以管理员身份安装或运行应用程序。

回答

3

没有什么特别不对您的VB6应用程序。我会说这是InstallSheild的旧版本,这可能是这种情况下的问题。

该功能称为User Access Control (UAC),已在Windows Vista和以下Microsoft操作系统中引入,以防止应用程序对%ProgramFiles%进行任意写入访问。您仍然可以手动执行(通过将文件复制并粘贴到%ProgramFiles%中),但UAC会提示您获得许可。

为了确保您的应用程序能够正常运行,请在%ProgramFiles%目录中保存%APPDATA%或注册表中的应用程序设置,NOT。在安装或卸载需要对%ProgramFiles%进行写入访问的程序时,您必须以管理员身份运行它(除非您禁用UAC,这是一个巨大的安全风险,强烈建议不要)。

+0

谢谢gsbabil。我知道我的InstallShield版本不知道任何关于appdata文件夹的信息。如果您熟悉InstallShield Express 12,是否足够聪明地为Vista/Win 7选择appdata文件夹并为XP编程文件? – DrZ 2012-02-29 02:22:33

+0

@Drz:我对InstallShield不是很熟悉。但是,如果它不是一个特殊的要求,你为什么不尝试NSIS [1]。 NSIS与Windows 7和Vista兼容,且可配置性很强。 [1] http://nsis.sourceforge。net/Main_Page – gsbabil 2012-02-29 06:19:49

+0

@DrZ:忘了补充 - NSIS在许多大型项目中都是免费的而且很受欢迎。 – gsbabil 2012-02-29 06:27:40

2

是的,有什么特别不对您的VB6应用程序。它将数据存储在错误的地方。您的应用程序不能访问程序文件文件夹,除非它以管理员身份运行。这是由于User Account Control,正如gsabil的答案所解释的。

这里有一些解决方案(最好最后一个)

  • 始终运行在VB6应用程序作为管理员。
  • 关闭用户帐户控制。这将打开一些安全漏洞,并不建议
  • 让你的安装程序更改权限,在你的安装目录,授予对所有用户进行写访问。这是相当一个黑客,但它可能是一个快速的方法,让你的程序工作
  • Change your application(不是你的安装程序),使其将其数据存储在%APPDATA%,而不是在安装目录。这是可取的。这里是一些detailed advice关于如何在VB6中做到这一点
+0

-1表示关闭UAC,这在Windows中是安全明智的风险。 UAC不是防白痴的。但是,当应用程序尝试执行特权操作时,它会引起相当大的报警。 – gsbabil 2012-02-29 12:38:09

+0

@gsbabil。正确的是,我会编辑我的答案,警告禁用UAC – MarkJ 2012-02-29 14:41:25

+0

谢谢。不再投票了。 – gsbabil 2012-03-01 00:21:41