Доступ К Общей Сетевой Папке
мне нужно получить доступ через VBA к папке, размещенной на сетевом файловом сервере. Папка доступна в письменной форме только через учетную запись службы (отличную от обычных учетных записей пользователей), для которой у меня есть имя пользователя и пароль.
через пользовательский интерфейс я вижу эту папку и сопоставляю ее как локальный диск, но для доступа к ней в письменной форме мне нужно выйти из Windows и войти в систему через учетную запись службы.
есть ли способ получить доступ к сетевой папке во время обычного сеанса пользователя но hardcoding имя пользователя и pwd в коде VBA?
Я попытался сопоставить папку как локальный диск с:
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.MapNetworkDrive "S:", "corp-serverHostingFolder", False, Username, pwd
но не работал (диск " S " не был сопоставлен). Если вместо этого я делаю то же самое, но без предоставления логина и пароля:
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.MapNetworkDrive "S:", "corp-serverHostingFolder"
Он отлично работает.
теперь интересно, возможно ли то, что я пытаюсь сделать? Если нет, то есть ли альтернатива?
спасибо
1 ответов
Вы можете найти ответ значения в вашем тестировании.
по сути, я бы проверил пару вещей...
убедитесь, что вы еще не подключены к этому ресурсу с помощью текущего зарегистрированного пользователя. Если вы, вы можете получить сообщение об ошибке, как показано ниже:
убедитесь, что вы используете
domain\username
синтаксис в вашем имени пользователя.
в противном случае я думаю, что вы правильное направление. Я собрал некоторый пример кода на основе ссылки выше и смог успешно подключиться к сетевому ресурсу под другим именем пользователя и перебрать список файлов.
(обратите внимание на подсказку, что вам на самом деле не нужно сопоставлять диск, чтобы установить соединение.)
следующий код является очень быстрой (рабочей) реализацией VBA образца, указанного в доступ к сетевому ресурсу из VBScript, например FileSystemObject
Public Sub TestNetShareName()
Dim NetworkObject As Object
Dim FSO As Object
Dim Directory As Object
Dim Filename As Object
Dim ServerShare As String
Dim UserName As String
Dim Password As String
ServerShare = "\corp-server\HostingFolder"
UserName = "mydomain\myuser"
Password = "freddie123"
Set NetworkObject = CreateObject("WScript.Network")
Set FSO = CreateObject("Scripting.FileSystemObject")
NetworkObject.MapNetworkDrive "", ServerShare, False, UserName, Password
Set Directory = FSO.GetFolder(ServerShare)
For Each Filename In Directory.Files
Debug.Print Filename.Name
Next
Set Filename = Nothing
Set Directory = Nothing
Set FSO = Nothing
NetworkObject.RemoveNetworkDrive ServerShare, True, False
Set NetworkObject = Nothing
End Sub