7

基本上与这个问题相同,但针对VB6

客户的应用程序“AppName”的配置文件存储在 CommonAppData 中。

  • 在 Windows XP 下是 C:\Documents and Settings\All Users\Application Data\AppName
  • 在 Windows Vista 下是 C:\ProgramData\AppName

如何使用VB6 获得正确的文件夹名称??

附加说明,我更喜欢使用 API 调用而不是添加对 shell32.dll 的引用

4

3 回答 3

9

使用后期绑定:

Const ssfCOMMONAPPDATA = &H23
Dim strCommonAppData As String

strCommonAppData = _
    CreateObject("Shell.Application").NameSpace(ssfCOMMONAPPDATA).Self.Path
于 2010-06-19T00:28:47.527 回答
3

找到了;

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
于 2010-06-16T18:06:37.190 回答
2

Karl Peterson发布了一个名为CSystemFolders的嵌入式VB6 类,该类将找到 CSIDL_APPDATA、CSIDL_LOCAL_APPDATA 和 CSIDL_COMMON_APPDATA。

Karl 的代码总是可靠的,不接受替代品 :)

于 2010-06-17T18:04:51.203 回答