Seguinte: Tive essa dor de cabeça usando o MS-Terminal Server Tente definir uma pasta individual para cada usuario ou sessão. Veja se revolve:
[]s, Mario. Chame o seguinte código: { cria uma pasta para cada usuario remoto } PastaImagensRaiz := 'C:\IMAGENS\'; { BARRAS AO FINAL... } CriaPastas; { abaixo ... } ... FUNCTION PastaImagens: String; ... .. private public PastaImagensRaiz, pastaUsuario : String; end; ... PROCEDURE TIWServerController.CriaPastas; VAR res : LongBool; pasta, subPasta : String; begin pasta := PastaImagensRaiz; res := CreateDirectory(pAnsiChar(pasta), nil); Randomize; subPasta := IntToStr(Random(300000)); { numero entre 0 e 300.000. NOTA: pode alterar para o nome do usuario, ou qualquer outro ID unico } pastaUsuario := pasta + subPasta + '\'; CreateDirectory(pAnsiChar(pastaUsuario), nil); {$I-} ChDir(pastaUsuario); {$I+} TRY { Este trecho muda a pasta onde serão gerados os arquivos DELx.MB e evita mensagem "Share Violation" ao se usar CachedUpdates para LongRaw; note que cada usuario tem uma pasta; E se a ANTA do usuario logar em mais de uma sessao no Termianl Server (TS), o Try mascara "directory busy" e mostra a mensagem para deslogar... } Session.NetFileDir := pastaUsuario; Session.PrivateDir := pastaUsuario; Session.SessionName := subPasta; Session.Open; EXCEPT { MessageDLG('Verifique se você não está logado em outro computador e deslogue do sistema!',mtInformation,[mbOK],0); Caso controle por NOME de usuario, NAO permite + de 1 sessao com o mesmo nome...} END; {TRY} end; FUNCTION TIWServerController.PastaImagens: String; begin PastaImagens := pastaUsuario; { retorna barra invertida ao final; cuidado! } end;