我正在使用一个非常旧的InstallShield Express4版本来打包我的VB6应用程序。在XP上安装它,效果很好。但当我在Windows7机器上安装它,而不是使用“以管理员身份运行”时,一切似乎都是只读的。我不能编辑INI文件,因为access is denied。应用程序就是无法正常运行。就像它甚至不能访问文件夹一样。它安装在默认的“程序文件”文件夹中。我卸载了应用程序,使用“以管理员身份运行”选项重新安装,并将快捷方式的兼容性设置为“以管理员身份运行”,然后一切正常。
我的问题是,这是应用程序必须以管理员身份运行的VB6中继承的问题,还是InstallShield问题?如果是InstallShield Express的问题,InstallSheild Express 2012的最新版本会解决这个问题吗?我希望用户不必担心以管理员身份安装或运行应用程序。
发布于 2012-02-29 10:15:12
您的VB6应用程序没有什么特别的问题。我会说这是旧版本的InstallSheild,这可能是本例中的问题所在。
该功能称为User Access Control (UAC),已在Windows Vista和后续的微软操作系统中引入,以防止应用程序对%ProgramFiles%进行任意写入访问。您仍然可以手动执行此操作(通过将文件复制并粘贴到%ProgramFiles%中),但UAC将提示您是否允许。
要确保您的应用程序正常运行,请将应用程序设置保存在%ProgramFiles%目录中的%APPDATA%或注册表中,而不是中。在安装或卸载您的程序时,需要对%ProgramFiles%进行写访问,您必须以管理员身份运行它(当然,除非您禁用了UAC,这是一个巨大的安全风险,强烈建议您不要这么做)。
发布于 2012-02-29 20:06:57
是的,你的VB6应用程序有一些特别的问题。它将数据存储在错误的位置。您的应用程序无法通过访问程序文件夹,除非它是以管理员身份运行的。这是由于User Account Control,正如gsabil的回答中所解释的那样。
这里有一些解决方案(最后一个是最好的)
中执行此操作的一些detailed advice
https://stackoverflow.com/questions/9492593
复制相似问题