Acessar pasta compartilhada via serviço windows
Boa tarde,
Estou desenvolvendo um serviço windows no delphi 7 e me deparei com a seguinte situação: preciso ler os arquivos que estão sendo disponibilizados numa máquina da rede tendo apenas o ip e o nome da pasta compartilhada (algo como \\10.1.1.77\log). Para isso, fiz uma rotina pra validar se há arquivos a processar nesta pasta:
{ Valida se existe algum arquivo de log a ser analisado no momento que o serviço é executado }
Function ExisteArquivos(DiretorioArqIni:String):Boolean;
var SR: TSearchRec;
dia,
mes,
ano : Word;
sAux: String;begin
{$IFDEF DEBUG}
GravaLog(cTipoDebug, 'Iniciando Function ExisteArquivos...');
{$ENDIF}
DtHoraUltimaExecucao := GetDataHoraUltimaExecucao(DiretorioArqIni);
DecodeDate(DtHoraUltimaExecucao, ano, mes, dia);
sAux := IfThen(dia<10,'0'+IntToStr(dia),IntToStr(dia));
sAux := sAux + '_' + IfThen(mes<10,'0'+IntToStr(mes),IntToStr(mes));
sAux := sAux + '_' + IntToStr(ano);
{$IFDEF DEBUG}
GravaLog(cTipoDebug, 'Validando existência do diretório: ' + CaminhoLog);
{$ENDIF}
//Valida o diretório do log
if (Trim(CaminhoLog) <> EmptyStr)
and DirectoryExists(CaminhoLog) then
begin
{$IFDEF DEBUG}
GravaLog(cTipoDebug, 'Diretório Validado...');
{$ENDIF}
CaminhoLog := IncludeTrailingBackslash(CaminhoLog);
FillChar(SR, SizeOf(TSearchRec), 0);
try
if FindFirst(CaminhoLog + '*_' + sAux + '.TXT', faAnyFile, SR) = 0 then
begin
{$IFDEF DEBUG}
GravaLog(cTipoDebug, 'Primeiro Arquivo Encontrado: ' + SR.Name);
{$ENDIF}
Result := True;
end
else
Result := False;
finally
FindClose(SR);
end;
end
else
begin
GravaLog(cTipoErro, 'Erro durante a execução da função ExisteArquivos.... Diretório inválido: ' +
CaminhoLog );
Result := False;
end;
{$IFDEF DEBUG}
GravaLog(cTipoDebug, 'Encerrando Function ExisteArquivos...');
{$ENDIF}
end;
Ai entra o meu problema: se eu rodar este código via um executável normal, eu consigo acessar a pasta, validar e fazer tudo o que preciso.... se eu rodar este mesmo código via serviço apontando para uma pasta local da máquina, também... agora, se eu usar no arquivo de configuração como caminho o da máquina em que será compartilhado os arquivos (\\10.1.1.77\log ou mapeado como Y: por exemplo), o código acima acusa que o diretório é inválido e não me permite acessá-lo pelo serviço windows que criei... alguém tem alguma sugestão de como contornar este problema?
Discussão (3)
Carregando comentários...