C# 为什么我的应用程序不向用户';一些机器上的应用程序数据?

C# 为什么我的应用程序不向用户';一些机器上的应用程序数据?,c#,.net,log4net,appdata,C#,.net,Log4net,Appdata,我制作了一个在Windows101809上运行的应用程序。它需要以管理员身份运行,有时需要使用命令行参数。一种方法是以管理员身份运行cmd,导航到文件夹并使用相应的参数运行应用程序。启动时,它使用日志库的内置功能在%APPDATA%\AppName下创建日志文件夹 该应用程序是在C#、.Net 4.6中开发的,并使用log4net作为日志库,配置文件中说明: 现在我有一个用户,声称这对他不起作用。应用程序既不创建子目录(AppName),也不创建任何日志文件。由于我不能直接查看他们的机器,我

我制作了一个在Windows101809上运行的应用程序。它需要以管理员身份运行,有时需要使用命令行参数。一种方法是以管理员身份运行
cmd
,导航到文件夹并使用相应的参数运行应用程序。启动时,它使用日志库的内置功能在
%APPDATA%\AppName
下创建日志文件夹

该应用程序是在C#、.Net 4.6中开发的,并使用log4net作为日志库,配置文件中说明:


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

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

他们会不会有一些错误的配置

此外,我不能仅仅像一个解决方案那样添加解决方案,因为它必须与客户讨论


应用程序能够在一台Windows 10计算机上写入呼叫用户的APPDATA文件夹,但在另一台Windows 10计算机上无法写入的原因是什么?

我想原因是用于记录的
APPDATA
位于管理员文件夹中(您告诉我们它是以管理员身份运行的)。

除了重构应用程序以将日志写入共享文件夹(例如应用程序文件夹本身或“%systemdrive%\ProgramData\your app name”文件夹)之外,您可以做的事情不多。

“我不知道Windows 10上是否也会发生这种情况”:据我所知,Win10上也会发生这种情况。您为什么不尝试一下,作为一个测试,要将%AppData%的值写入app文件夹内的文件中吗?因此,您和您的客户可以查看并了解日志文件的写入位置。另一个注意事项:为什么不在应用程序文件夹(可能在子文件夹中)中写入日志文件?因此建议查看其他用户的APPDATA文件夹?或者,如果它是作为系统帐户运行的,甚至可以使用'C:\Windows\system32\config\systemprofile\AppData'。不幸的是,我不能仅仅更改应用程序并将新版本发送给用户。但也许我可以提供一个小的测试应用程序。我将把它添加到解决方案列表中。我建议使用
var str=Environment.ExpandEnvironmentVariables(“%AppData%”)
然后将
str
写入运行应用程序的文件夹中的文件。因此,当应用以admin.Tim身份运行时,您可以确定哪个是%AppFolder%,最可能的原因是用于日志记录的AppFolder位于Administrator文件夹中。。。如果你不重构应用程序,你就无能为力了……谢谢。实际上我已经在下一版本中实现了你的想法。