這個特殊文件夾實際上不應該被用來存儲用戶文件有很多原因。微軟甚至第三方已經開始將其用於完全不同的目的。根據已安裝的應用程序,您甚至可能在此處找到DLL。
如果你不想讓用戶玩這個文件夾,他們可能會刪除一個對其他程序的操作至關重要的文件。
但是,如果您堅持這樣做,請注意通過字符串值引用文件夾是不安全的,因爲它可以根據用戶的語言設置顯示在不同的別名下。它甚至可能通過行政行爲被重新安置在別處。
它也沒有必要屈服於使用年齡的非COM ShellExecute入口點,至少早在版本5.0的Shell32.dll。
這至少應該從WinXP的前瞻性工作:
Option Explicit
Private Const ssfCOMMONDOCUMENTS As Long = &H2E
Private Enum SHOW_WINDOW
SW_HIDE = 0
SW_SHOWNORMAL = 1
SW_SHOWMINIMIZED = 2
SW_SHOWMAXIMIZED = 3
SW_SHOWNOACTIVATE = 4
SW_SHOW = 5
SW_SHOWMINNOACTIVE = 7
SW_SHOWDEFAULT = 10
End Enum
Private Shell As Object
Private Path As String
Private Sub File1_Click()
On Error Resume Next
'Works on XP through Vista, fails on Win7:
'Shell.ShellExecute File1.FileName, , Path, "open", SW_SHOWNORMAL
'Works on XP through Win7:
Shell.ShellExecute Path & "\" & File1.FileName, , , "open", SW_SHOWNORMAL
If Err Then
MsgBox "Error " & CStr(Err.Number) & " " & Err.Description
End If
End Sub
Private Sub Form_Load()
Set Shell = CreateObject("Shell.Application")
With Shell.NameSpace(ssfCOMMONDOCUMENTS).Self
Path = .Path
End With
With File1
.Pattern = "*.doc"
.Path = Path
End With
End Sub
工作對我來說(在Windows 7 VB6),但嘗試通過' 「打開」'作爲第二個參數。 – GSerg 2013-03-24 16:36:05
'QuoteFilePath'位於何處?調用它時,完整的'QuoteFilePath&File1.FileName'是什麼?這可能是文件名或位置的問題,也可能是Win7/8上的用戶權限問題,而這些問題在XP上不存在。這也可能是因爲您將工作目錄設置爲'C:\',這是Vista和以上版本的標準(非管理員)用戶無法寫入的。 – 2013-03-24 16:41:14
quoteFILEpath是Windows 8機器上的「users \ public \ public文檔」文件夾。該文件位於名爲「data」的子文件夾中,文件名是一系列數字,後跟.doc(例如:3434332.doc)。如果我不應該將工作目錄設置爲C :,我應該將其設置爲? – 2013-03-24 16:53:31