Универсальное расположение для записи файла под любой версией Windows на любом языке

#windows #universal

#Windows #Универсальный

Вопрос:

Имея необходимость развернуть приложение VBA на нескольких компьютерах под управлением Windows XP, мне нужно было автоматически создать определенный файл в универсальном месте, независимо от жестких дисков, структуры каталогов, даже языка операционной системы: корневой каталог диска C, а именно C:

Это сработало нормально… пока эти компьютеры не начали переходить на Vista или Windows 7, которые, как я обнаружил, не позволяют легко записывать на диск C. Что может быть альтернативным универсальным расположением для записи, которое будет работать под любой версией Windows, на любом языке, для всех пользователей?

Ответ №1:

Вызовите Windows API, который возвращает путь к SpecialFolder на соответствующем компьютере, и используйте это — хорошо подходят, например

  • CSIDL_COMMON_DOCUMENTS (не зависит от пользователя)
  • CSIDL_COMMON_APPDATA (не зависит от пользователя)
  • CSIDL_APPDATA (зависит от пользователя / приложения)
  • CSIDL_MY_DOCUMENTS (зависит от пользователя)

Windows API заботится обо всем, что вы описали — указанные выше местоположения доступны для записи, работают для всех версий Windows и не зависят от языка.

Исходный код VBA и примеры см.http://www.cpearson.com/excel/SpecialFolders.aspx

Ссылки на MSDN см.:

Комментарии:

1. Спасибо, Яхия, за твой быстрый и напористый ответ. Я надеялся на более простое решение, особенно после того, как я посмотрел на код VBA, но теперь я должен признать, что это будет не так просто, как C: — Кстати, мои исследования привели меня к тому, что называется appdata. Кто-нибудь?

2. appdata это просто название местоположения и уже часть моего ответа выше… пожалуйста, не забудьте проголосовать / отметить как принятый любой ответ, который помог…