Универсальное место для записи файла в любую версию Windows на любом языке - PullRequest
0 голосов
/ 19 октября 2011

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

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

1 Ответ

1 голос
/ 19 октября 2011

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

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

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

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

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

...