问候,
我在将 32 位软件程序迁移到 x64 环境(Windows XP SP3 迁移到 Windows 7 X64)时遇到了一个特殊问题。该应用程序是我们终端销售办事处的电子收银机/收银机。
该应用程序位于:
"C:\Program Files(x86)\Q_Kassa"
我们已为将以 shell 形式运行软件的用户配置了所有相关访问权限,包括应用程序所需的文件夹的所有相关读/写权限。但是,只要我们不“以管理员身份运行”,或者只要加载程序的用户不是本地管理员组的成员,应用程序就不会加载,并抛出无法找到位于以下位置的文件的错误:
C:\Program Files\Q_Kassa\FileName
问题是,所有相关配置数据、配置文件和注册信息都告诉应用程序其数据位于 Program Files (x86) 目录中。出于某种原因,当使用“以管理员身份运行”选项运行应用程序时,或者当用户处于本地管理员组中时运行应用程序时,Windows 似乎会误解它需要获取的文件夹为应用程序文件夹。
总结一下:
As local admin / Run-as-admin option used:
the application is fed info from C:\Program Files(x86)\Q_KASSA\
--> as it should be.
When run as a normal user the application tries to get it's info from
C:\Program Files\Q_Kassa
--> wrong folder
有人可以解释为什么应用程序的运行级别显然决定了使用哪个 Program Files 目录?
问候,
答案1
这可能是遗留问题和%PROGRAMFILES%
混淆。最简单的解决方法是使用符号链接,如下所示:
mklink /j "C:\Program Files(x86)\Q_Kassa" "C:\Program Files\Q_Kassa\"
这样,无论程序“认为”它实际上在哪里,它都会工作。另外,请注意,如果它必须写到此程序文件文件夹,您需要提升权限才能正常工作。Windows 确实会重定向到“VirtualRoot”文件夹,但这最多只能说是混乱。