Где безопасное место для хранения файлов журналов, совместимых с XP, Vista и Windows 7? - PullRequest
5 голосов
/ 12 мая 2010

У меня есть приложение winforms, которое должно записывать логи. Приложение также должно работать без предупреждений UAC и без учетной записи администратора.

Где я могу писать свои логи, не нарушая настройки безопасности по умолчанию? Кроме того, это должно работать в Windows XP, Vista и 7.

Дополнительные баллы, если все пользователи могут записывать в один и тот же набор файлов журнала.

Ответы [ 2 ]

6 голосов
/ 12 мая 2010

Вы не можете (не должны) жестко кодировать путь. Вместо этого спросите Windows, где его хранить, вызвав SHGetFolderPath, который можно использовать для возврата местоположения каталога AppData текущего пользователя (или всех пользователей).

Статья MSDN с решением C: http://support.microsoft.com/kb/310294

Полезный пример Delphi: http://delphi.about.com/od/kbwinshell/a/SHGetFolderPath.htm

Обратите внимание, что опасно делать одноразовый запрос для пути, преобразовывать его в абсолютную строку и сохранять его в своих настройках. Потому что Windows может изменить это. Они могут присоединяться к домену, обновлять окна и т. Д., И окна действительно могут перемещать ваши файлы. Если вы затем укажете на старое местоположение, не спросив снова «где находится эта папка», вы сломаете. Был там, сделал это ...

1 голос
/ 12 мая 2010

Используя SHGetFolderPath , у вас есть возможность использовать пользовательские или глобальные каталоги файлов журналов. Если вы используете CSIDL_COMMON_APPDATA , то: «Эта информация не будет перемещаться и будет доступна любому, кто использует компьютер». звучит так, как будто это то, что вы хотите.

...