Как открыть защищенную паролем папку общей сети с помощью VB.NET?

Если вы придерживаетесь http, вы можете использовать кодирование передачи по частям и отложить отправку пакетов / кусков. Это действительно будет что-то похожее на hardcoded thread::sleep, но вы можете использовать цикл обработки событий, чтобы определить, когда отправлять следующий блок, вместо того, чтобы останавливать поток.

Вы можете столкнуться с проблемами синхронизации, возможно, ваша логика сна вызывает более длительные задержки, чем время исполнения песни. У YouTube та же логика, о которой вы говорите. Похоже, что они разбивают видео на несколько HTTP-запросов, а клиент внешнего интерфейса запрашивает новый чанк, когда буфер слишком мал. Разделение файла на несколько запросов http тела и последующая сборка их на клиенте могут иметь характеристики, которые вы ищете.

Вы можете просто реализовать http Range заголовок и позволить клиенту запрашивать только определенный Range mp3-файл. https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests

8
задан Dirk Vollmar 2 December 2016 в 12:17
поделиться

2 ответа

найденный здесь http://www.mredkj.com/vbnet/vbnetmapdrive.html

Public Declare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" _
( ByRef lpNetResource As NETRESOURCE, ByVal lpPassword As String, _
  ByVal lpUserName As String, ByVal dwFlags As Integer) As Integer

 Public Declare Function WNetCancelConnection2 Lib "mpr" Alias   "WNetCancelConnection2A" _
    (ByVal lpName As String, ByVal dwFlags As Integer, ByVal fForce As Integer) As Integer

    <StructLayout(LayoutKind.Sequential)> _
Public Structure NETRESOURCE
        Public dwScope As Integer
        Public dwType As Integer
        Public dwDisplayType As Integer
        Public dwUsage As Integer
        Public lpLocalName As String
        Public lpRemoteName As String
        Public lpComment As String
        Public lpProvider As String
    End Structure

Public Const ForceDisconnect As Integer = 1
Public Const RESOURCETYPE_DISK As Long = &H1

Public Function MapDrive(ByVal DriveLetter As String, ByVal UNCPath As String) As Boolean

        Dim nr As NETRESOURCE
        Dim strUsername As String
        Dim strPassword As String

        nr = New NETRESOURCE
        nr.lpRemoteName = UNCPath
        nr.lpLocalName = DriveLetter & ":"
        strUsername = Nothing '(add parameters to pass this if necessary)
        strPassword = Nothing '(add parameters to pass this if necessary)
        nr.dwType = RESOURCETYPE_DISK

        Dim result As Integer
        result = WNetAddConnection2(nr, strPassword, strUsername, 0)

        If result = 0 Then
            Return True
        Else
            Return False
        End If
    End Function

Public Function UnMapDrive(ByVal DriveLetter As String) As Boolean
    Dim rc As Integer
        rc = WNetCancelConnection2(DriveLetter & ":", 0, ForceDisconnect)

        If rc = 0 Then
            Return True
        Else
            Return False
        End If

    End Function
6
ответ дан 5 December 2019 в 19:04
поделиться

одно решение состояло бы в том, чтобы отобразить сетевую папку на доступную букву диска. Вы могли выполнить тот Windows OS использования команды:

System.Diagnostics.Process.Start("net.exe", "use K: \\Server\URI\path\here /USER:<username> <password>" )

Просто замените имя пользователя и пароль с учетными данными, в которых Вы нуждаетесь и удостоверяетесь, что буква диска доступна.

Разъединять Вас может звонить

System.Diagnostics.Process.Start("net.exe", "use /delete K:" )
3
ответ дан 5 December 2019 в 19:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: