Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Подключение сетевых ресурсов


Автор: oleg2s 21.1.2013, 13:39
Доброе время суток.
Есть самописанная служба. Эта служба периодически читает каталог на сетевом ресурсе.
ОС - Win 7

Есть несколько случаев, когда возникают проблемы с подключением.
1. Русурс уже подключен к компьютеру пользователем рабочего стола.
    В этом случае подключение в службе не возможно (или я этого не знаю).
2. Если запустить службу от имени пользователя рабочего стола, то все равно ничего не получается. Т.к. сетевые диски в любом случае в сервисе не видны.

Как подключить сетевой ресурс? При этом надо сделать так, что если у пользователя этот ресурс уже подключен, то отключать его нельзя.

Код

// Открывает доступ к сетевому ресурсу 
Function Access_Resourse(PathResurse, Username, Password: String): Boolean; 
var ShareName: string; 
    Res: Integer; 
    lpNetResource: TNetResource; 
Const r = ERROR_SESSION_CREDENTIAL_CONFLICT; 
begin 
  ShareName := ExcludeTrailingPathDelimiter(PathResurse); 

  ZeroMemory(@lpNetResource, SizeOf(lpNetResource)); //заполним нолями значение указателя 

  lpNetResource.dwType := RESOURCETYPE_ANY; 
  lpNetResource.lpLocalName := nil; 
  lpNetResource.lpProvider := nil; 
  lpNetResource.lpRemoteName := PChar(ShareName); 

  res := WNetAddConnection2(lpNetResource, PChar(Password), PChar(UserName), 0); 
  // Если соединение уже установлено другими приложениями 
  // то открываем доступ без использования имени и пароля 
  if res = ERROR_SESSION_CREDENTIAL_CONFLICT then 
     res := WNetAddConnection2(lpNetResource, Nil, Nil, 0); 
  if Res = 0 then 
     Result := True 
  else 
     Begin 
     Result := False; 
     WriteMessageLogFile('Ошибка открытия сетевого ресурса - ' + PathResurse); 
     End; 
End; 


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)