Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 28.01.2013
Сообщений: 3
1
.NET 3.x

Как программно ввести логин и пароль окна, которое открывается при открытии сетевой папки?

28.01.2013, 19:14. Показов 3620. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток. Прошу помощи в следующем вопросе. Мне необходимо считать информацию из текстового файла который лежит в сетевой папке. Делаю это так:

VB.NET
1
2
3
Dim MyRead As System.IO.StreamReader
MyRead = IO.File.OpenText("\\ShareG\builds\CurB.txt") 
BValue = MyRead.ReadToEnd ' BValue - глобальная переменная.
Но, для доступа к сетевой папке необходимо ввести логин и пароль. И собственно при попытке считать данные из текстового файла CurB.txt выскакивает exception, информируя о том что не удается открыть файл, ибо нужно ввести логин и пароль. Отсюда мой вопрос - можно ли программно, при попытке считать информацию из сетевой папки, передать логин и пароль для доступа к этой сетевой папке?

Заранее благодарен за мысли, советы.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.01.2013, 19:14
Ответы с готовыми решениями:

Открытие директории на сервере: как программно ввести эти логин и пароль
При попытке открыть папку на сервере выскакивает окно с запросом логина и пароля. Вопрос: как...

Как в консольном приложении можно ввести набор символов в окна логин-пароль?
Доброго времени суток всем! Подскажите, пожалуйста, как в консольном приложении можно ввести...

При попытке зайти в одноклассники крадут логин и пароль. + иногда открывается левая страница
Решил в кой-то веки зайти в "одноклассники" (обычно там не сижу). Ввожу логин и пароль, высветилось...

При открытии папки открывается командная строка
зарегистрированные типы файлов, для паток и устройств. фото для примера у меня 7-ка стоит! ...

6
Почетный модератор
21413 / 9147 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
30.01.2013, 19:35 2
Лучший ответ Сообщение было отмечено как решение

Решение

Nicktoris, Вам необходимо авторизоваться в сетевой папке, лишние окна ни к чему.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Imports System.Runtime.InteropServices
 
Public Class Form1
 
    Private Sub Test()
        Dim nr As New NETRESOURCE
        nr.dwType = RESOURCETYPE_DISK
        nr.lpRemoteName = "\\Комп\Шара"
        If WNetAddConnection2(nr, "ДваОдинТриВосемь", "Loser", 0) <> NO_ERROR Then
            Throw New Exception("WNetAddConnection2 failed.")
        End If
        ' Какие-то действия с содержимым папки
    End Sub
 
    <StructLayout(LayoutKind.Sequential)> _
    Private Structure NETRESOURCE
        Public dwScope As UInteger
        Public dwType As UInteger
        Public dwDisplayType As UInteger
        Public dwUsage As UInteger
        <MarshalAs(UnmanagedType.LPTStr)> _
        Public lpLocalName As String
        <MarshalAs(UnmanagedType.LPTStr)> _
        Public lpRemoteName As String
        <MarshalAs(UnmanagedType.LPTStr)> _
        Public lpComment As String
        <MarshalAs(UnmanagedType.LPTStr)> _
        Public lpProvider As String
    End Structure
 
    Private Const NO_ERROR As UInteger = 0
    Private Const RESOURCETYPE_DISK As UInteger = 1
 
    <DllImport("mpr.dll", CharSet:=CharSet.Auto)> _
    Private Shared Function WNetAddConnection2(ByRef lpNetResource As NETRESOURCE, <[In](), MarshalAs(UnmanagedType.LPTStr)> ByVal lpPassword As String, <[In](), MarshalAs(UnmanagedType.LPTStr)> ByVal lpUserName As String, ByVal dwFlags As UInteger) As UInteger
    End Function
 
    <DllImport("mpr.dll", CharSet:=CharSet.Auto)> _
    Private Shared Function WNetCancelConnection2(<[In](), MarshalAs(UnmanagedType.LPTStr)> ByVal lpName As String, ByVal dwFlags As UInteger, <MarshalAs(UnmanagedType.Bool)> ByVal fForce As Boolean) As UInteger
    End Function
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Test()
    End Sub
End Class
Код взял со стека вроде, шибко не вникал.
5
0 / 0 / 0
Регистрация: 28.01.2013
Сообщений: 3
04.02.2013, 14:19  [ТС] 3
Памирыч, огромное спасибо за ответ. К сожалению пока не могу проверить, очень занят иным срочным заданием. Обязательно попробую и отпишусь в ближайшее время.
0
0 / 0 / 0
Регистрация: 28.01.2013
Сообщений: 3
20.02.2013, 11:56  [ТС] 4
Памирыч, огромное спасибо. Вроде как работает.
0
0 / 0 / 0
Регистрация: 09.10.2020
Сообщений: 2
09.04.2024, 14:11 5
Цитата Сообщение от Памирыч Посмотреть сообщение
Nicktoris, Вам необходимо авторизоваться в сетевой папке, лишние окна ни к чему.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Imports System.Runtime.InteropServices
 
Public Class Form1
 
    Private Sub Test()
        Dim nr As New NETRESOURCE
        nr.dwType = RESOURCETYPE_DISK
        nr.lpRemoteName = "\\Комп\Шара"
        If WNetAddConnection2(nr, "ДваОдинТриВосемь", "Loser", 0) <> NO_ERROR Then
            Throw New Exception("WNetAddConnection2 failed.")
        End If
        ' Какие-то действия с содержимым папки
    End Sub
 
    <StructLayout(LayoutKind.Sequential)> _
    Private Structure NETRESOURCE
        Public dwScope As UInteger
        Public dwType As UInteger
        Public dwDisplayType As UInteger
        Public dwUsage As UInteger
        <MarshalAs(UnmanagedType.LPTStr)> _
        Public lpLocalName As String
        <MarshalAs(UnmanagedType.LPTStr)> _
        Public lpRemoteName As String
        <MarshalAs(UnmanagedType.LPTStr)> _
        Public lpComment As String
        <MarshalAs(UnmanagedType.LPTStr)> _
        Public lpProvider As String
    End Structure
 
    Private Const NO_ERROR As UInteger = 0
    Private Const RESOURCETYPE_DISK As UInteger = 1
 
    <DllImport("mpr.dll", CharSet:=CharSet.Auto)> _
    Private Shared Function WNetAddConnection2(ByRef lpNetResource As NETRESOURCE, <[In](), MarshalAs(UnmanagedType.LPTStr)> ByVal lpPassword As String, <[In](), MarshalAs(UnmanagedType.LPTStr)> ByVal lpUserName As String, ByVal dwFlags As UInteger) As UInteger
    End Function
 
    <DllImport("mpr.dll", CharSet:=CharSet.Auto)> _
    Private Shared Function WNetCancelConnection2(<[In](), MarshalAs(UnmanagedType.LPTStr)> ByVal lpName As String, ByVal dwFlags As UInteger, <MarshalAs(UnmanagedType.Bool)> ByVal fForce As Boolean) As UInteger
    End Function
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Test()
    End Sub
End Class
Код взял со стека вроде, шибко не вникал.
Добрый день! Не работает ваш код, возможно библиотеки изменились с 2013 года, пишет:
Вызов функции PInvoke "WNetAddConnection2" разбалансировал стек. Вероятно, это вызвано тем, что управляемая сигнатура PInvoke не совпадает с неуправляемой целевой сигнатурой. Убедитесь, что соглашение о вызовах и параметры сигнатуры PInvoke совпадают с неуправляемой целевой сигнатурой.
0
Модератор
Эксперт .NET
4309 / 3383 / 507
Регистрация: 27.01.2014
Сообщений: 6,183
09.04.2024, 14:30 6
animus_plt, попробуйте такое объявление WinAPI
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Imports System.Runtime.InteropServices
 
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _
Public Structure NETRESOURCE
    Dim     dwScope As Integer
    Dim     dwType As Integer
    Dim     dwDisplayType As Integer
    Dim     dwUsage As Integer
    Dim     lpLocalName As String
    Dim     lpRemoteName As String
    Dim     lpComment As String
    Dim     lpProvider As String
End Structure
 
Public Declare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" ( _
    ByVal lpNetResource As NETRESOURCE, _
    ByVal lpPassword As String, _
    ByVal lpUserName As String, _
    ByVal dwFlags As Integer) As Integer
или такое (в строке 2 заменим ByVal на ByRef)
VB.NET
1
2
3
4
5
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
0
0 / 0 / 0
Регистрация: 09.10.2020
Сообщений: 2
09.04.2024, 15:20 7
Цитата Сообщение от Yury Komar Посмотреть сообщение
animus_plt, попробуйте такое объявление WinAPI
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Imports System.Runtime.InteropServices
 
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _
Public Structure NETRESOURCE
    Dim     dwScope As Integer
    Dim     dwType As Integer
    Dim     dwDisplayType As Integer
    Dim     dwUsage As Integer
    Dim     lpLocalName As String
    Dim     lpRemoteName As String
    Dim     lpComment As String
    Dim     lpProvider As String
End Structure
 
Public Declare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" ( _
    ByVal lpNetResource As NETRESOURCE, _
    ByVal lpPassword As String, _
    ByVal lpUserName As String, _
    ByVal dwFlags As Integer) As Integer
или такое (в строке 2 заменим ByVal на ByRef)
VB.NET
1
2
3
4
5
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
Спасибо за быстрый ответ! Жму руку

Помог второй способ, с byref

Делаю вызов:
Dim nr As New NETRESOURCE
nr.dwType = RESOURCETYPE_DISK
nr.lpRemoteName = "\\Комп\Шара"
MsgBox(WNetAddConnection2(nr, "пароль", "имя", 0))
Ответ: 67
0
09.04.2024, 15:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2024, 15:20
Помогаю со студенческими работами здесь

Как ввести логин и пароль в запросе webbrowser на авторизацию
Здравствуйте, вопрос в следующем: при направлении webbrowser на страницу возвращающую 401 код в...

Как ввести логин и пароль в Telnet и получить ответ в файл?
Как ввести логин и пароль с bat файла в telnet и получить ответ в файл

Сетевой логин и пароль
Создал подключение, ввел пароль...подключилось, но пароль не сохранился, мне уже &quot;по горло&quot; надоело...

Сами закрываются окна при открытии папки с картинками
скинул на флешку папку с картинками, при открытии флешки - окно автоматичнски закрывается..такое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru