这个特殊文件夹实际上不应该被用来存储用户文件有很多原因。微软甚至第三方已经开始将其用于完全不同的目的。根据已安装的应用程序,您甚至可能在此处找到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