Необходимо в сервисе считать/изменить файл, расположенный на другой машине в локальной сети. Сначала была написана тестовая программка в которой TStringList спокойно открывал файлы, находящиеся на других ПК, но когда все было переписано в сервис, файлы перестали открывться. FileOpen также не помогло. В чем может быть дело? Возможно это происходит из-за того, что попытка чтения и записи - это нить?
» Сервис работы с файлами
dunenko
Есть ли права на доступ к файлам ?
Трудно посмотреть что возварщает GetLastError ?!
Есть ли права на доступ к файлам ?
Трудно посмотреть что возварщает GetLastError ?!
function TEcosoftThread.IsFileExist(filename : String): Boolean;
var
FileHandler : integer;
begin
result := False;
try
FileHandler := FileOpen(filename, fmOpenRead or fmShareDenyNone );
if Filehandler >0 then begin
Result := True;
FileClose(FileHandler);
end
Else
Log(Format('Error: file open error =%d, lasterror = %d', [FileHandler,GetLastError()]),'!');
except
Result :=False;
end;
end;
Возвращает:
15.12.2004 12:33:14 Error: file open =-1, lasterror = 3
15.12.2004 12:33:14 i:\sergey\join\151204ec.xml Not exist
(i - сетевой диск, доступ к нему есть)
В sysutils написано:
This second version of FileCreate lets you specify the access rights to put on the newly
created file. The access rights parameter is ignored on Win32.
Поэтому не очень понимаю, какие могут быть права. Сервис создан как ServiceType = stWin32. Более того, в не сервисном приложении работало.
Может быть есть какие-нибудь мысли или я чего-то не понимаю?
var
FileHandler : integer;
begin
result := False;
try
FileHandler := FileOpen(filename, fmOpenRead or fmShareDenyNone );
if Filehandler >0 then begin
Result := True;
FileClose(FileHandler);
end
Else
Log(Format('Error: file open error =%d, lasterror = %d', [FileHandler,GetLastError()]),'!');
except
Result :=False;
end;
end;
Возвращает:
15.12.2004 12:33:14 Error: file open =-1, lasterror = 3
15.12.2004 12:33:14 i:\sergey\join\151204ec.xml Not exist
(i - сетевой диск, доступ к нему есть)
В sysutils написано:
This second version of FileCreate lets you specify the access rights to put on the newly
created file. The access rights parameter is ignored on Win32.
Поэтому не очень понимаю, какие могут быть права. Сервис создан как ServiceType = stWin32. Более того, в не сервисном приложении работало.
Может быть есть какие-нибудь мысли или я чего-то не понимаю?
dunenko
В твоем случае сервис должен запускаться под аккаунтом юзера, имеющего доступ к сетевому файлу. Скорее всего ты пускаешь сервис от имени LocalSystem - отсюда и проблема.
В твоем случае сервис должен запускаться под аккаунтом юзера, имеющего доступ к сетевому файлу. Скорее всего ты пускаешь сервис от имени LocalSystem - отсюда и проблема.
Страницы: 1
Предыдущая тема: FAQ по Borland C++ Builder
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.