2010-02-25 11 views
5

Mamy aplikację .NET, którą rozprowadzamy dla naszych użytkowników za pośrednictwem pakietu instalacyjnego MSI. Mamy aplikacje C++, które są uruchamiane każdego ranka, aby sprawdzić, czy kopia aplikacji użytkownika jest nieaktualna, a jeśli tak, ściągamy nowy MSI i instalujemy go. Jeśli aplikacja jest uruchomiona, musimy ją usunąć, abyśmy mogli przeprowadzić aktualizację.System Windows wydaje się tracić dostęp do aplikacji .NET

Naszym problemem jest to, że co jakiś czas wygląda na to, że Windows "traci" naszą aplikację. Nie będzie raportować, że proces jest uruchomiony - choć tak jest. Umożliwi nam to zastąpienie, a nawet usunięcie pliku wykonywalnego w użyciu bez likwidowania aplikacji.

Może to coś powszechnego - ale nie wiemy, co się dzieje! Czy ktokolwiek ma wgląd w tę sytuację?

Wygląda na to, że tworzona jest tymczasowa kopia naszej aplikacji, a program jest od tego pobierany. Ale jeśli tak jest, dlaczego to się nie dzieje przez cały czas?

EDYTOWANIE: W naszym programie Używamy funkcji "EnumProcesses" z zestawu Platform SDK, PSAPI.dll, aby wyliczyć wszystkie uruchomione procesy.

+0

Czego używasz do wykrycia, czy aplikacja działa? –

+3

Mówi, że nie działa * i * pozwala na nadpisanie plików wykonywalnych? Oto proste wytłumaczenie: nie działa. –

+0

Nie wiesz, co robi twoja aplikacja, ale na pewno brzmi jak ClickOnce byłby czystszym rozwiązaniem. – Walter

Odpowiedz

2

Czy to możliwe, że skrypt lub aplikacja działa jako program 64-bitowy, a druga jako program 32-bitowy? Jeśli tak, to na 64-bitowych komputerach sprawdzenie aktualizacji może znajdować się w niewłaściwym miejscu dla istniejącej aplikacji, a tym samym zgłosić ją jako brakującą?

+0

Patrząc na to, wydaje się obiecujące .. Aplikacja jest 32-bitowa, nie jest jeszcze pewna co do skryptu aktualizacji. Ale czy to też w jakiś sposób wpłynęłoby na możliwość przesłonięcia pliku wykonywalnego? – Matt

+0

To się nie dzieje, ale dziękuję za sugestię. – Matt

0

Jakiego mechanizmu używasz do sprawdzania, czy proces jest uruchomiony, czy nie?

Spróbuj użyć czegoś podobnego do eksploratora procesów, aby zobaczyć, z której ścieżki ładowany jest plik wykonywalny - powinien być wymieniony w sekcji modułów.

+0

Zobacz edycję mojego oryginalnego pytania do mechanizmu wyliczania procesów. Nie myślałem o używaniu procesora, ale to dobry pomysł. Niestety nie możemy odtworzyć tego na żądanie, ale będę o tym pamiętać, kiedy to się powtórzy. – Matt

Powiązane problemy