我正在尝试在 Win7 64 位机器上的 VB.net 2010 express 中编写一个列出自定义类的文件。我使用在机器和它所属的网络上都具有管理员权限的帐户安装了 VB.net express。我应该能够访问机器上的任何文件,并且可以从 Windows 资源管理器访问。我被“System.UnauthorizedAccessException”阻止了。
我试过更改清单文件。虽然这不应该是必需的,因为该帐户已经具有完全权限。它没有奏效。下面是有问题的代码片段。
我开始怀疑是否可以使用托管代码读取驱动器上的文件。我可以恢复到 VBA 类,它封装了我多年前编写的古老 Win32 API 调用,但这违反了本练习的目的。任何建议,将不胜感激。
Private Sub sLoadCatalog(ByVal strPath As String, ByVal intParentID As Integer)
'Get the file list
Dim strsearchPattern As String = "*"
Dim fp As New FileIOPermission(FileIOPermissionAccess.PathDiscovery _
Or FileIOPermissionAccess.Read, strPath)
Try
'fp.Demand()
fp.Assert()
Dim dirInfo As DirectoryInfo = New DirectoryInfo(strPath)
Dim FileList() As FileInfo = dirInfo.GetFiles()
If FileList.Length > 0 Then
… Loop through the file list and do something exciting
End If
Dim dirFolder() As DirectoryInfo = dirInfo.GetDirectories
If dirFolder.Length > 0 Then
… Loop through the folder list and do something exciting
sLoadCatalog(strfolder, intLastID)
Else
Exit Sub
End If
Catch e As SecurityException
MessageBox.Show("Security Cannot access folder " & strPath)
Catch k As UnauthorizedAccessException
MessageBox.Show("Unauthorized Cannot access folder " & strPath)
End Try