Почему мое приложение не записывает APPDATA пользователя на некоторых машинах? - PullRequest
0 голосов
/ 10 февраля 2020

Я создал приложение, работающее на Windows 10 1809. Его необходимо запустить От имени администратора , а иногда и с параметрами командной строки. Один из способов сделать это - запустить cmd от имени администратора , перейти к папке и запустить приложение с соответствующими параметрами. После запуска он создает папку журналов в %APPDATA%\AppName, используя встроенные функции библиотеки журналов.

Приложение было разработано в C#,. Net 4.6 и использует журнал 4net в качестве библиотека журналов, для которой файл конфигурации гласит:

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

Теперь у меня есть один пользователь, утверждающий, что это не будет работать для него. Приложение не создает подкаталог (AppName) и не создает никаких файлов журналов. Поскольку я не могу прямо взглянуть на их машину, я хотел бы собрать некоторые возможные причины для этого (также для того, чтобы смягчить такое поведение в будущем).

В старых Windows операционных системах Я знаю, что запуск приложения В качестве администратора иногда фактически запускает приложение с другой учетной записью пользователя, учетной записью администратора. Тогда будет использоваться папка APPDATA другого пользователя. Однако я не знаю, могло ли это произойти и на Windows 10.

Может ли быть какая-то неправильная конфигурация на их стороне?

Также я не могу просто добавить обходные пути как FallbackAppender , так как это должно быть обсуждено с клиентом.

Какие могут быть причины, по которым приложение может записывать в папку APPDATA вызывающего пользователя на одном Windows 10 автомат, но не на другом?

1 Ответ

1 голос
/ 13 февраля 2020

ИМХО причина в том, что AppData, используемый для регистрации, находится в папке «Администратор» (вы говорите нам, что он запускается от имени администратора).
Вы не можете ничего сделать, кроме рефакторинга приложения, чтобы записать журнал в общая папка (например, сама папка приложения или "% systemdrive% \ ProgramData \ your-app-name" папка).

...