CommonAppData в vb6

В основном то же как этот вопрос, но для VB6.

Приложению клиента "AppName" сохранили его конфигурационные файлы в CommonAppData.

  • Под Windows XP, который является C:\Documents and Settings\All Users\Application Data\AppName
  • Под Windows Vista, который является C:\ProgramData\AppName

Как я получаю корректный foldername с VB6??

Дополнительные примечания, я предпочитаю использовать Вызов API вместо того, чтобы добавить ссылку на shell32.dll

5
задан Community 23 May 2017 в 12:16
поделиться

3 ответа

Использовать позднее связывание:

Const ssfCOMMONAPPDATA = &H23
Dim strCommonAppData As String

strCommonAppData = _
    CreateObject("Shell.Application").NameSpace(ssfCOMMONAPPDATA).Self.Path
8
ответ дан 18 December 2019 в 14:42
поделиться

нашел;

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
3
ответ дан 18 December 2019 в 14:42
поделиться

Karl Peterson опубликовал в VB6 класс под названием CSystemFolders, который будет находить CSIDL_APPDATA, CSIDL_LOCAL_APPDATA и CSIDL_COMMON_APPDATA.

Код Карла всегда надежен, не принимайте никаких замен :)

2
ответ дан 18 December 2019 в 14:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: