У меня есть приложение winforms, которое должно выписать журналы. Приложение также должно работать без предупреждений контроля учётных записей и использования неадминистраторской учетной записи.
Где я могу записать свои журналы, не сталкиваясь с настройками безопасности по умолчанию? Кроме того, это должно работать над Windows XP, Vista, и 7.
Дополнительные очки, если все пользователи могут записать в тот же набор файлов журнала.
Вы не можете (не должны) жестко запрограммировать путь. Вместо этого спросите Windows, где его сохранить, вызвав SHGetFolderPath, который можно использовать для возврата местоположения каталога AppData текущего пользователя (или всех пользователей).
Статья MSDN с решением на языке C: http://support.microsoft.com / kb / 310294
Полезный пример Delphi: http://delphi.about.com/od/kbwinshell/a/SHGetFolderPath.htm
Обратите внимание, что делать одноразовый запрос пути, преобразовать его в абсолютную строку и сохранить в своих настройках. Потому что Windows может это изменить. Они могут присоединяться к домену, обновлять окна и т. Д., И окна действительно могут перемещать ваши файлы. Если вы затем укажете на старое местоположение, не спрашивая снова «где эта папка», вы сломаетесь. Был там, сделал это ...
Используя SHGetFolderPath , вы можете использовать индивидуальные или глобальные каталоги файлов журналов. Если вы используете CSIDL_COMMON_APPDATA , то: «Эта информация не будет перемещаться и доступна любому, кто использует компьютер». что звучит так, как будто это то, что вы хотите.