我正在运行我的应用程序(sample.exe),它在Windows上使用外部DLL(即我没有此DLL的源代码)。外部DLL在%appdata%
文件夹中生成一些数据。当应用程序独立运行时,一切运行正常。
现在,当我使用MPI运行sample.exe时,日志将在"C:\Windows\System32\config\systemprofile\AppData"
中生成
据我所知,这是SYSTEM的%appdata%
。此外,MPI使用"smpd"
服务运行,需要以管理员身份安装。所以,我认为sample.exe可能是系统所有,而不是用户所有。但是,当从任务管理器检查时,应用程序的所有者仍然是用户(%username%
)。
我不明白为什么在系统的appdata文件夹而不是用户的appdata文件夹中生成日志。
由于sample.exe
是您自己的应用程序,因此您可以通过添加日志记录代码来解决问题。例如:
如果应用程序数据文件夹正确但环境变量不正确(这是我对问题的第一个猜测),那么您可以尝试使用SetEnvironmentVariable和/或_putenv在加载外部库之前更正路径。
可能的解释是在LOCALSYSTEM帐户下运行的服务正在保存文件。对应用程序的体系结构知之甚少,我不能详细说明它是如何产生的。
这是因为您的Windows服务使用“本地系统帐户”运行。转到服务的属性和“LogOn”选项卡。从本地系统帐户更改为“此帐户”并提供您的凭据。不,该服务应在用户帐户中运行,并应使用用户AppData。