[Javascript/ASP.NET]Detecteren welke SP de gebruiker heeft

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Walance
  • Registratie: September 2005
  • Laatst online: 15:12

Walance

Hm.. wat zal ik hier schrijven

Topicstarter
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:
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.

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Heb je al gekeken op http://browserspy.dk/os.php?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • Walance
  • Registratie: September 2005
  • Laatst online: 15:12

Walance

Hm.. wat zal ik hier schrijven

Topicstarter
Bedankt voor de link, die site kon ik nog niet. Ik zie er niets opstaan over een service pack, maar ik zal morgen op het werk eens verder kijken.

Acties:
  • 0 Henk 'm!

  • Walance
  • Registratie: September 2005
  • Laatst online: 15:12

Walance

Hm.. wat zal ik hier schrijven

Topicstarter
Ik heb gekeken op die site, maar ik zie daar ook geen enkele manier om uit te lezen wat ik nodig heb.

In het voorbeeld hierboven laat ik zien dat ik een nieuw activexobject maak met als naam "MsRdp.MsRdp.5". Deze werkt alleen als de gebruiker Remote Desktop 6.1 of hoger heeft geïnstalleerd. Nu ben ik weer even aan het zoeken of er ook zo'n activexobject aangemaakt kan worden voor RDP 6.0 of lager, maar dan met een andere naam. Is er iemand hier die dat toevallig weet? Ik kan het tot nu toe niet vinden.

Acties:
  • 0 Henk 'm!

  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
Browsersniffing is tegenwoordig niet meer zo 'in'. Je kan beter checken of eigenschappen bestaan omdat je altijd wel een browserstring zal tegenkomen die net weer iets anders is dan jij voorzien hebt.

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

moozzuzz schreef op vrijdag 30 juli 2010 @ 15:45:
Browsersniffing is tegenwoordig niet meer zo 'in'. Je kan beter checken of eigenschappen bestaan omdat je altijd wel een browserstring zal tegenkomen die net weer iets anders is dan jij voorzien hebt.
Heb je het probleem wel gelezen in de TS :?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • dominic
  • Registratie: Juli 2000
  • Laatst online: 05-09 20:25

dominic

will code for food

Ik vrees dat je toch een component moet schrijven dat lokaal meer rechten heeft. Aangezien je toch in .NET bezig bent en de detectie in een browser moet draaien kan ik je aanraden om Silverlight te gebruiken. De code om de SP te detecteren heb je zo te zien al liggen dus bak dit in een Silverlight app.

Download my music on SoundCloud


Acties:
  • 0 Henk 'm!

  • Walance
  • Registratie: September 2005
  • Laatst online: 15:12

Walance

Hm.. wat zal ik hier schrijven

Topicstarter
@dominic: Bedankt voor je idee. Dat is alleen eigenlijk niet wenselijk, want dan is er weer een extra ding wat de gebruiker nodig heeft, Silverlight. Volgens mij hebben veel mensen dat niet standaard op hun pc staan, zeker op oudere pc's.
Pagina: 1