Używamy obiektów COM do uzyskiwania dostępu do arkuszy kalkulacyjnych programu Excel w usłudze NT (za pośrednictwem hosta skryptów systemu Windows). Przed wersją Vista działało to pięknie, ale począwszy od wersji Vista otrzymujemy następujący błąd:Dostęp do plików z obiektu COM programu Excel kończy się niepowodzeniem po uruchomieniu z usługi NT w systemie Vista
Program Microsoft Office Excel nie może uzyskać dostępu do pliku "c: \ myfiles \ test.xls". Istnieje kilka możliwych przyczyn:
- Nazwa pliku lub ścieżka nie istnieje.
- Plik jest używany przez inny program.
- Skoroszyt, który próbujesz zapisać, ma taką samą nazwę jak obecnie otwarty skoroszyt.
Próbowałem zmienić ustawienia logowania usługi NT, aby używać własnego konta, konta administratora i systemu lokalnego. Przejrzałem Zasady Bezpieczeństwa Lokalnego i nie znalazłem nic. Spędziłem kilka dni na przeszukiwaniu Microsoft KB bezskutecznie.
Jeśli skrypt jest wykonywany z poziomu aplikacji konsolowej, działa poprawnie. Plik otwiera się i jest przetwarzany bez problemu. Błąd występuje tylko wtedy, gdy jest wykonywany z kontekstu usługi.
Jeśli usługa działa w systemie Windows XP lub Server 2003 z dodatkiem SP1, działa również poprawnie. Tylko w systemie Vista to się nie udaje (a teraz dostaliśmy zgłoszenie awarii w dodatku SP2 dla serwera Server 2003)!
kodem, na co warto jest wyjątkowo prosta:
dim xl_app
Set xl_app = CreateObject("Excel.Application")
xl_app.Workbooks.Open mypath,0,1
Podejrzewam, że ta osoba może być przeżywa ten sam problem: http://bytes.com/forum/thread819740.html
Czy można otworzyć plik Excel w usłudze za pomocą zwykłego interfejsu API Win32 (np. CreateFile?) –
W jakim języku jest napisana usługa? W jaki sposób wywołujesz hosta skryptów? –