为什么我的应用程序在某些机器上不写入用户的 APPDATA?

Why does my application not write to the user's APPDATA on some machines?

我已经在 Windows 10 1809 上 运行ning 申请了。它需要 运行 As Administrator 并且有时需要命令线路参数。一种方法是 运行 cmd 以管理员身份 ,导航到文件夹,然后 运行 使用正确参数的应用程序。启动后,它会使用日志库的内置功能在 %APPDATA%\AppName 下创建一个日志文件夹。

该应用程序使用 C#、.Net 4.6 开发,使用 log4net 作为日志库,其配置文件指出:

<file type="log4net.Util.PatternString" value="${AppData}\AppName\FileName.log" />

现在我有一个用户声称这对他不起作用。该应用既不创建子目录 (AppName) 也不创建任何日志文件。由于我无法直接查看他们的机器,因此我想收集一些可能的原因(也是为了在将来减轻此类行为)。

在较旧的 Windows 操作系统上,我知道 运行 以管理员身份 运行应用程序 有时实际上 运行 应用程序与另一个用户帐户,管理员帐户。然后将使用其他用户的 APPDATA 文件夹。不过,我不知道 Windows 10 是否也会发生这种情况。

他们这边会不会有某种错误配置?

此外,我不能只添加像 FallbackAppender 这样的解决方法,因为它必须与客户讨论。

应用程序能够在一台 Windows 10 机器上写入调用用户的 APPDATA 文件夹,但在另一台机器上不能写入的原因可能是什么?

恕我直言,原因是用于日志记录的 AppData 在管理员文件夹中(您告诉我们它是 运行 作为管理员)。
除了重构应用程序以将日志写入共享文件夹(例如应用程序文件夹本身或 "%systemdrive%\ProgramData\your-app-name" 文件夹)之外,您无能为力。 =11=]