Certyfikowanie/podpisywanie własnej aplikacji

0

Cześć, piszę dość spory system, który może sam się aktualizować. I tu się pojawia problem na systemie Windows Vista i 7.

Otóż system składa się z kilku składnkików. M.in. klient, manager usługi, usługa, updater.
Updater jak sama nazwa wskazuje zajmuje się aktualizacją.
I teraz tak. W skrócie polega to na tym, że manager usługi wysyła do usługi żądanie sprawdzenia aktualizacji. Usługa pobiera sobie informacje z netu i wysyła informacje poszczególnym składnikom aplikacji, że mają się aktualizować, lub nie.

Następnie składnik odpala aplikację updater, która go zamyka i dalej aktualizuje odpowiedni składnik.
Wszystko działa ok, jesli chodzi o klienta i managera usługi. Natomiast z samą usługą na Viście i 7 jest problem(XP działa ok).

Updater jest aplikacją okienkową. I usługa musi uruchomić tą aplikację.
Robię to za pomocą sposobu podanego tutaj: http://4programmers.net/Forum/viewtopic.php?id=157435

Jak przedstawiono w ww. temacie, usługa wykonuje się do pewnej instrukcji, a potem nic się nie dzieje. Dzisiaj wreszcie udało mi się rozkminić o co chodzi, a chodzi o UAC.
Gdy wyłączyłem te zabezpieczenia w systemie, wszystko poszło ok. A więc całość rozbija się, z tego co wyczytałem o automatyczne podniesienie uprawnień. Niestety, żeby to zrobić, aplikacja(jak wyczytałem) musi być certyfikowana przez Windows.

Dzwoniłem do MS w tej sprawie, jednak pani co tam siedzi i maluje paznokcie nic nie była mi w stanie konkretnego powiedzieć. Więc może ktoś z Was powie jak i gdzie zdobyć taki podpis/certyfikat i czy w ogóle w dobrą stronę kombinuje, czy można to zrobić inaczej.

0

tak z miejsca:
spróbuj stworzyć usera, który ma wszystkie potrzebne uprawnienia i uruchamiać usługi jako ten user

0

a i jeszcze z manifestem mozna sprobowac

0
reich napisał(a)

a i jeszcze z manifestem mozna sprobowac

Możesz coś więcej o tym manifeście?

0

Gdy wyłączyłem te zabezpieczenia w systemie, wszystko poszło ok. A więc całość rozbija się, z tego co wyczytałem o automatyczne podniesienie uprawnień. Niestety, żeby to zrobić, aplikacja(jak wyczytałem) musi być certyfikowana przez Windows.

Dzwoniłem do MS w tej sprawie, jednak pani co tam siedzi i maluje paznokcie nic nie była mi w stanie konkretnego powiedzieć. Więc może ktoś z Was powie jak i gdzie zdobyć taki podpis/certyfikat i czy w ogóle w dobrą stronę kombinuje, czy można to zrobić inaczej.

Kupujesz certyfikat od pewnej firmy, podpisujesz aplikację (signtool.exe, ustawienia projektu w VS). Kosztuje to sporo (Microsoft najbardziej lubi VeriSigna), ale kod jest uznany za "zaufany" i może mieć trochę więcej uprawnień w systemie. Ale nie mam pojęcia czy to akurat z tym jest problem - szczerze mówiąc to raczej mam wrażenie, że podpisanie kodu nie zmieni sytuacji.

Żeby przetestować czy to tylko na tym jest problem możesz wygenerować certyfikat samopodpisany, wrzucić go do zaufanych certyfikatów w systemie, podpisać aplikację i testować dalej. Najwygodniej zapewne zrobić to przez openssl.

0

Nie potrzebujesz żadnego certyfikatu, wystarczy poprawny manifest:
http://msdn.microsoft.com/en-us/library/bb756929.aspx

0

Jeżeli sposób podany powyżej nie zadziała i aplikacja nie "poprosi" o podniesienie uprawnień i nie możesz utworzyć procesu aktualizacji z prawami administratora (bo sam proces takowych nie ma), to możesz spróbować użyć aktualizacji Windows Installer.

Jakiś czas temu wprowadzono możliwości aktualizacji do Windows Installer. Podstawowemu instalatorowi i aktualizacjom przypisuje się jakieś ID, a co więcej, można główny instalator podpisać certyfikatem. Jeżeli zostanie uruchomiona aktualizacja z tym samym ID i certyfikatem, Windows uruchomi instalator na prawach administratora, NAWET jeżeli zalogowany użytkownik ich nie ma.

Taki instalator możesz stworzyć za darmo przy użyciu WIX.

http://msdn.microsoft.com/en-us/library/bb756897.aspx

1 użytkowników online, w tym zalogowanych: 0, gości: 1