Brak mi już sił i nerwów:
Mam usługę która czyta plik csv(wygenerowany na innym kompie, ale ścieżka jest lokalna) i zapisuje zawartość do bazy. Musiałem zainstalować ją teraz na Win7 i zaczęły się cuda, na XP działało dobrze...
Cały czas dostaję wyjątek - * brak dostępu do pliku* bla bla (tam gdzie jest WorkBooks.Open)

  1. Wyłączyłem UACa
  2. Otwieram plik z parametrem do odczytu
  3. ustawiłem uprawnienia w katalogu w którym są pliki na full access dla każdej grupy (sprawdziłem - kopiowany plik ma full_access)
  4. zalogowałem usługę z kontem administratora

I oczywiście nic to nie dało !! W aplikacji typu okienko działa dobrze. Z kolei u kumpla na Win7, plik otwiera poprawnie.
Zauważyłem też, że jeśli ja stworzę własny plik CSV to wtedy działa - stąd wniosek że "pluje się" o to, że plik został stworzony na innym komputerze.
To jest samplowy kod, którym testuje to otwarcie pliku:

procedure TService1.ServiceCreate(Sender: TObject);
var
  Path, Log, Ex, Ex2: string;
  Excel: OleVariant;
  F: TextFile;
  OK : Boolean;
begin
  OK := True;
  Path := ExtractFileDir(ParamStr(0));
  Log := Path + '\log.txt';
  Ex := Path + '\plik.csv';
  Ex2 := Path + '\tmp.csv';
  CopyFile(PChar(Ex), PChar(Ex2), False);

  AssignFile(F, Log);
  Rewrite(F);

  Excel := CreateOleObject('Excel.Application');
  Excel.DisplayAlerts := False;

  if FileExists(Ex2) then
  begin
      Append(F);
      WriteLn(F, 'Plik istneije');
      CloseFile(F);
  end
  else
  begin
      Append(F);
      WriteLn(F, 'Plik nie istneije');
      CloseFile(F);
  end;

  try
    Excel.WorkBooks.Open(Ex2, True, True);
  except on E: Exception do
    begin
      Append(F);
      WriteLn(F, E.Message);
      CloseFile(F);
      OK := False;
    end;
  end;

  if OK then
  begin
    Append(F);
    WriteLn(F, Excel.Cells[1,1]);
    CloseFile(F);
  end;

  Excel.Quit;
  Excel := UnAssigned;
end;