VB.Net: объект Shell возвращает ноль в некоторых системах при попытке получить содержимое папки камеры, но нормально работает в других системах - PullRequest
0 голосов
/ 05 ноября 2018

Мой код работает правильно во многих системах и возвращает содержимое папки камеры правильно, но тот же код возвращает ноль при запуске на другом компьютере и клиентском компьютере. Это мой код:

    Public Function GetShell32NameSpace(ByVal folder As Object) As Shell32.Folder
      Dim shellAppType As Type = Type.GetTypeFromProgID("Shell.Application")
      Dim shell As Object = Activator.CreateInstance(shellAppType)
      Return CType(shellAppType.InvokeMember("NameSpace", System.Reflection.BindingFlags.InvokeMethod, Nothing, shell, New Object() {folder}), Shell32.Folder)
    End Function

    Private Sub btn_Click(.....)
     Dim ShellObject As New Shell = CreateObject("shell.application")
     Dim srcfolder As Shell32.Folder = ShellObject.BrowseForFolder(CInt(Handle), "Choose Folder", 0, 0)
     If (srcfolder Is Nothing) Then
     Else
        Dim fi As FolderItem = (TryCast(srcfolder, Folder3)).Self
        Dim path As String = fi.Path
        Dim FolderCollection As Shell32.Folder= GetShell32NameSpace(Trim(path))
     End If
    End sub

Я успешно получаю Путь к выбранной папке (используя BrowseForFolder), но при передаче возвращенного пути в функции GetShell32NameSpace () в некоторых системах возвращается Null, но работает нормально и возвращает все содержимое папки камеры. в другой системе.

...