我正在使用一个非常旧版本的InstallShield Express 4来打包我的VB6应用程序。在XP上安装它,效果很好。但是,当我将它安装在Windows 7机器上,而不是使用“以管理员身份运行”时,一切似乎都是只读的。我无法编辑INI文件,因为access is denied
。应用程序无法正常运行。它几乎无法访问该文件夹。它安装在默认的“程序文件”文件夹中。我卸载应用程序,使用“以管理员身份运行”选项重新安装,将快捷方式的兼容性设置为“以管理员身份运行”,一切正常。
我的问题是VB6中继承的内容,应用程序必须以管理员身份运行,还是InstallShield问题?如果是InstallShield Express问题,最新版本的InstallSheild Express 2012会解决这个问题吗?我希望用户不必担心以管理员身份安装或运行应用程序。
答案 0 :(得分:3)
您的VB6应用程序没有什么特别的错误。我会说这是旧版本的InstallSheild,在这种情况下可能会出现问题。
此功能称为User Access Control (UAC),已在Windows Vista和以下Microsoft操作系统中引入,以防止应用程序对%ProgramFiles%
进行任意写入访问。您仍然可以手动执行它(通过将文件复制并粘贴到%ProgramFiles%中),但UAC会提示您的许可。
要确保您的应用程序能够正常运行,请将应用程序设置保存在%APPDATA%
或注册表中, NOT 保存在%ProgramFiles%目录中。在安装或卸载需要对%ProgramFiles%
进行写入访问的程序的过程中,您必须以管理员身份运行它(除非您已禁用UAC,这是一个巨大的安全风险,强烈建议不要使用)。
答案 1 :(得分:2)
是的,你的VB6应用程序有一些特别的错误。它将数据存储在错误的位置。您的应用程序无法访问程序文件文件夹,除非它以管理员身份运行。这是由User Account Control引起的,正如gsabil的回答中所解释的那样。
以下是一些解决方案(最后一个)