Wij zijn bezig met een website voor een RemoteApp applicatie. Hiervoor willen we een aantal dingen controleren, zodat we aan de gebruiker een specifieke melding kunnen geven met wat de gebruiker kan doen om het probleem op te lossen. De meeste dingen lukken wel, maar er is één ding wat me maar niet lukt.
Ik kan geen manier vinden om te zien welk Service Pack de gebruiker heeft geïnstalleerd op zijn/haar pc. Het gaat dan vooral om Windows XP, we moeten daarvan weten of Service Pack 3 is geïnstalleerd. Dit moeten we weten, omdat in SP3 Remote Desktop 6.1 zit.
Nu heb ik dus al verschillende dingen geprobeerd, met Javascript en ASP.NET. Bij Javascript heb je dus window.navigator om gegevens van de browser/pc van de gebruiker uit te lezen. Er is daar een property genaamd "appMinorVersion", in IE7 en IE8 staat daar '0' in (wat op zich wel logisch is, omdat het versie 7.0 en 8.0 is). In IE6 staat daar echter het nummer van de Service Pack van de gebruiker in. Er staat dan ";SP3;" bij Service Pack 3 en ";SP2;" bij Service Pack 2, dus voor IE6 (ja die wordt nog gebruikt soms...) kan ik dat gebruiken, maar niet voor IE7 en hoger.
Dan heb je ook nog window.navigator.userAgent, daar staat wel in welke Windows versie de gebruiker heeft, maar niet welke Service Pack die heeft. Één ding wat ik daarbij nog heb kunnen vinden is dat er achteraan "SV1" staat als de gebruiker SP2 of hoger heeft. Maar dat staat er dan weer alleen in IE6 en IE8, niet in IE7 om één of andere reden. Overigens heb ik daar zowiezo niets aan, want ik moet weten of er SP3 op staat.
Ik heb de verschillen van de userAgents op een rijtje gezet (dmv test machines) om te kijken of ik er iets uit kon halen:
Maar zoals je ziet kan ik daar niet uithalen welke Service Pack de gebruiker heeft.
Ik heb ook naar ASP.NET gekeken, of ik het via dat kon uitlezen, maar daar kan ik ook niets in vinden. .NET heeft bijvoorbeeld wel Environment.OSVersion.ServicePack, maar dat is van de server, niet de gebruiker. Dan is er ook nog Request.Browser en HttpBrowserCapabilities, maar daaruit kan ik niet veel meer halen dan wat ik met Javascript kan.
Dus kan iemand mij hiermee op weg helpen, of is het gewoonweg niet mogelijk?
Overigens wil ik de Service Pack alleen weten omdat ik niet uit kan lezen welke RemoteDesktop versie de gebruiker heeft als deze lager is dan 6.1. Ik gebruik daarvoor het volgende stukje:
Het probleem is dus dat het aanmaken van het ActiveXObject "MsRdp.MsRdp.5" fout gaat op (tot nu toe) 2 plekken, als Remote Desktop lager is dan versie 6.1 of wanneer de ActiveX van Remote Desktop op uitgeschakeld staat bij invoegtoepassingen in IE.
Mijn hoofdprobleem is dus eigenlijk dat in de 'catch' moet weten welke van de 2 mogelijke situaties fout is gegaan. Nu dacht ik dat te doen door te kijken of de gebruiker Service Pack 3 heeft, omdat daar versie 6.1 bij zit van Remote Desktop en bij Service Pack 2 zit die niet. (De gebruiker kan dan die wel los installeren, maar we moeten iets....) Dus als je hiervoor wel een oplossing weet, zodat ik al het bovenstaande helemaal niet hoef te doen, dan is dat natuurlijk nog beter.
Ik kan geen manier vinden om te zien welk Service Pack de gebruiker heeft geïnstalleerd op zijn/haar pc. Het gaat dan vooral om Windows XP, we moeten daarvan weten of Service Pack 3 is geïnstalleerd. Dit moeten we weten, omdat in SP3 Remote Desktop 6.1 zit.
Nu heb ik dus al verschillende dingen geprobeerd, met Javascript en ASP.NET. Bij Javascript heb je dus window.navigator om gegevens van de browser/pc van de gebruiker uit te lezen. Er is daar een property genaamd "appMinorVersion", in IE7 en IE8 staat daar '0' in (wat op zich wel logisch is, omdat het versie 7.0 en 8.0 is). In IE6 staat daar echter het nummer van de Service Pack van de gebruiker in. Er staat dan ";SP3;" bij Service Pack 3 en ";SP2;" bij Service Pack 2, dus voor IE6 (ja die wordt nog gebruikt soms...) kan ik dat gebruiken, maar niet voor IE7 en hoger.
Dan heb je ook nog window.navigator.userAgent, daar staat wel in welke Windows versie de gebruiker heeft, maar niet welke Service Pack die heeft. Één ding wat ik daarbij nog heb kunnen vinden is dat er achteraan "SV1" staat als de gebruiker SP2 of hoger heeft. Maar dat staat er dan weer alleen in IE6 en IE8, niet in IE7 om één of andere reden. Overigens heb ik daar zowiezo niets aan, want ik moet weten of er SP3 op staat.
Ik heb de verschillen van de userAgents op een rijtje gezet (dmv test machines) om te kijken of ik er iets uit kon halen:
code:
1
2
3
4
5
| XP SP2 IE6: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) XP SP2 IE7: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1) SP SP3 IE6: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) XP SP3 IE7: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1) XP SP3 IE8: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) |
Maar zoals je ziet kan ik daar niet uithalen welke Service Pack de gebruiker heeft.
Ik heb ook naar ASP.NET gekeken, of ik het via dat kon uitlezen, maar daar kan ik ook niets in vinden. .NET heeft bijvoorbeeld wel Environment.OSVersion.ServicePack, maar dat is van de server, niet de gebruiker. Dan is er ook nog Request.Browser en HttpBrowserCapabilities, maar daaruit kan ik niet veel meer halen dan wat ik met Javascript kan.
Dus kan iemand mij hiermee op weg helpen, of is het gewoonweg niet mogelijk?
Overigens wil ik de Service Pack alleen weten omdat ik niet uit kan lezen welke RemoteDesktop versie de gebruiker heeft als deze lager is dan 6.1. Ik gebruik daarvoor het volgende stukje:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| var lvRemoteDesktopVersion = ""; try { lvRemoteDesktopClient = new ActiveXObject("MsRdp.MsRdp.5"); lvRemoteDesktopVersion = lvRemoteDesktopClient.Version; } catch (e) { //alert(e.message); } if (lvRemoteDesktopVersion == "") { // } else { //Check for correct version and do some more stuff } |
Het probleem is dus dat het aanmaken van het ActiveXObject "MsRdp.MsRdp.5" fout gaat op (tot nu toe) 2 plekken, als Remote Desktop lager is dan versie 6.1 of wanneer de ActiveX van Remote Desktop op uitgeschakeld staat bij invoegtoepassingen in IE.
Mijn hoofdprobleem is dus eigenlijk dat in de 'catch' moet weten welke van de 2 mogelijke situaties fout is gegaan. Nu dacht ik dat te doen door te kijken of de gebruiker Service Pack 3 heeft, omdat daar versie 6.1 bij zit van Remote Desktop en bij Service Pack 2 zit die niet. (De gebruiker kan dan die wel los installeren, maar we moeten iets....) Dus als je hiervoor wel een oplossing weet, zodat ik al het bovenstaande helemaal niet hoef te doen, dan is dat natuurlijk nog beter.