CommonAppData в vb6 - PullRequest
       29

CommonAppData в vb6

5 голосов
/ 16 июня 2010

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

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

  • В Windows XP это C: \ Documents and Settings \ Все пользователи \ Application Data \ AppName
  • В Windows Vista это C: \ ProgramData \ AppName

Как получить правильное имя папки с VB6? ?

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

Ответы [ 3 ]

8 голосов
/ 19 июня 2010

Использовать позднюю привязку:

Const ssfCOMMONAPPDATA = &H23
Dim strCommonAppData As String

strCommonAppData = _
    CreateObject("Shell.Application").NameSpace(ssfCOMMONAPPDATA).Self.Path
3 голосов
/ 16 июня 2010

нашел его;

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
2 голосов
/ 17 июня 2010

У Карла Петерсона опубликовано раскрывающийся класс VB6 с именем CSystemFolders , который найдет CSIDL_APPDATA, CSIDL_LOCAL_APPDATA и CSIDL_COMMON_APPDATA.

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

...