Подключение сетевых ресурсов

 
0
 
Delphi, Kylix and Pascal
ava
oleg2s | 21.01.2013, 14: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; 

Ответы (0)

Комментарии не добавлены

Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
  oleg2s
advanced
Отправить