與question基本相同,但對於VB6。vb6中的CommonAppData
客戶的應用 「APPNAME」 已存儲在 CommonAppData 其配置文件。
- 在Windows XP中爲C:\ Documents和Settings \所有 用戶\應用數據\ AppName的
- 在Windows Vista下也就是C:\ ProgramData \ AppName的
如何獲得正確的文件名與VB6??
其他注意事項,我更喜歡使用,而不是增加一個參考SHELL32.DLL
與question基本相同,但對於VB6。vb6中的CommonAppData
客戶的應用 「APPNAME」 已存儲在 CommonAppData 其配置文件。
- 在Windows XP中爲C:\ Documents和Settings \所有 用戶\應用數據\ AppName的
- 在Windows Vista下也就是C:\ ProgramData \ AppName的
如何獲得正確的文件名與VB6??
其他注意事項,我更喜歡使用,而不是增加一個參考SHELL32.DLL
使用後期綁定:
Const ssfCOMMONAPPDATA = &H23
Dim strCommonAppData As String
strCommonAppData = _
CreateObject("Shell.Application").NameSpace(ssfCOMMONAPPDATA).Self.Path
發現這是一個API調用;
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
卡爾·彼得森有published一個下拉VB6類中調用CSystemFolders會發現CSIDL_APPDATA,CSIDL_LOCAL_APPDATA和CSIDL_COMMON_APPDATA。
卡爾的代碼總是可靠的,不接受其它替代:)
嗯? 'Shell32.dll'中的任何**都是**調用。 – MarkJ 2010-06-17 18:03:07
@ MarkJ:我在說我不想在引用中添加shell32.dll(在項目菜單下)。 – DavRob60 2010-06-18 00:26:13
你的意思是你不想使用你最初鏈接的VBScript代碼,因爲你不想添加任何引用?但是你不必添加任何引用,你可以使用後期綁定。像在鮑勃的答案http://stackoverflow.com/questions/3054802/commonappdata-in-vb6/3073836#3073836 – MarkJ 2010-06-21 12:16:08