#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
это просто название местоположения и уже часть моего ответа выше… пожалуйста, не забудьте проголосовать / отметить как принятый любой ответ, который помог…