В основном то же как этот вопрос, но для VB6.
Приложению клиента "AppName" сохранили его конфигурационные файлы в CommonAppData.
- Под Windows XP, который является C:\Documents and Settings\All Users\Application Data\AppName
- Под Windows Vista, который является C:\ProgramData\AppName
Как я получаю корректный foldername с VB6??
Дополнительные примечания, я предпочитаю использовать Вызов API вместо того, чтобы добавить ссылку на shell32.dll
Использовать позднее связывание:
Const ssfCOMMONAPPDATA = &H23
Dim strCommonAppData As String
strCommonAppData = _
CreateObject("Shell.Application").NameSpace(ssfCOMMONAPPDATA).Self.Path
нашел;
Private Declare Function SHGetFolderPath _
Lib "shfolder.dll" Alias "SHGetFolderPathA" _
(ByVal hwndOwner As Long, _
ByVal nFolder As Long, _
ByVal hToken As Long, _
ByVal dwReserved As Long, _
ByVal lpszPath As String) As Long
Private Const CSIDL_COMMON_APPDATA = &H23
Private Const CSIDL_COMMON_DOCUMENTS = &H2E
Public Function strGetCommonAppDataPath() As String
Dim strPath As String
strPath = Space$(512)
Call SHGetFolderPath(0, CSIDL_COMMON_APPDATA, 0, 0, strPath)
strPath = Left$(strPath, InStr(strPath, vbNullChar))
strGetCommonAppDataPath = strPath
End Function
Karl Peterson опубликовал в VB6 класс под названием CSystemFolders, который будет находить CSIDL_APPDATA, CSIDL_LOCAL_APPDATA и CSIDL_COMMON_APPDATA.
Код Карла всегда надежен, не принимайте никаких замен :)