Где можно безопасно хранить файлы журналов, совместимые с XP, Vista и Windows 7?

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

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

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


person Ryan Michela    schedule 11.05.2010    source источник


Ответы (2)


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

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

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

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

person Chris Thornton    schedule 11.05.2010

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

person the_mandrill    schedule 11.05.2010