.NET Frameworkversies controleren

Status
Niet open voor verdere reacties.

famlam

Gebruiker
Lid geworden
15 okt 2008
Berichten
416
(Hoe) kan ik m.b.v. JavaScript controleren welke .NET Frameworkversie geïnstalleerd is?

De code moet
1. Alle versies controleren of deze bestaan (1.0, 1.1.4322, 2.0.50727, 3.0, 3.5 en 4.0)
2. Op alle (veel voorkomende) browsers werken (dus niet alleen IE)

Is dit mogelijk? en zo ja: Hoe?
 
Dat kan denk ik zeker weten niet. Sinds Javascript alleen maar dingen kan opvragen welke de browser geeft (zoals: wat is de naam van de browser, versie browser, etc) en het .net framework niet een van die dingen is, lijkt het me sterk.

Je kan het uiteraard mischien wel doen via IE, een activeX geval schrijven, en deze het werk laten doen. Daarnaast kan het mischien ook wel met een Java-applet, maar dan wordt de vraag meer een java-vraag.


:thumb:
 
Laatst bewerkt:
ActiveX is geen optie omdat deze alleen op IE werkt en ik iets wil dat op (vrijwel) alle browsers werkt.

Java is wel een optie, maar ik weet absoluut niets van die taal af, en om nu een topic te openen 'Wie kan er voor mij een programmaatje dat de .NET Frameworkversie controleert maken' is ook weer zo dubieus (dan krijg ik alleen maar reacties als 'probeer het eerst zelf').
 
Daar kun je inderdaad op rekenen.

Maar vertel eens wat de bedoeling is, waarom wil je dit. Misschien is er nog een andere oplossing voor je probleem.
 
Daar kun je inderdaad op rekenen.

Maar vertel eens wat de bedoeling is, waarom wil je dit. Misschien is er nog een andere oplossing voor je probleem.

Ik maak programmaatjes in vb.net (zie onderschrift). Voor vb.net (de naam zegt het al) is het .NET framework benodigd.
Ik krijg regelmatig mailtjes van mensen die willen weten welke versie van het .NET FW bij hun is geïnstalleerd. (Sommige programmaatjes vereisen .NET FW 2.0, sommige 3.5). Of ik krijg bugreports waarvan ik denk dat ze komen door de verkeerde versie ervan, maar de zender weet niet wat zijn .NET FW versie is en heeft het er dus niet bijvermeld.
Ik stuur dan altijd terug dat ze in het register moeten kijken (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v###) welke versies geïnstalleerd zijn. (of ik stuur een link op naar een pagina waar dit uitgelegd wordt). Ook in de FAQ staat dit uitgelegd.
Omdat het aantal mailtjes vrij groot is wil ik graag op elke pagina bij de systeemeisen achter '.NET Framework X.X of hoger' een link zetten 'Welke versie heb ik?' die verwijst naar de pagina waarop dit bekeken wordt (bijvoorbeeld door Java o.i.d.).
 
mischien is het een idee om een vbs-je te maken welke dit opzoekt. Dit is niet zo lastig, een beetje google-n op 'vbs register read' oid zal wel genoeg info zijn.


:thumb:
 
mischien is het een idee om een vbs-je te maken welke dit opzoekt. Dit is niet zo lastig, een beetje google-n op 'vbs register read' oid zal wel genoeg info zijn.

Helaas is dit ook alleen voor IE
 
Ik bedoelde het niet on-webpagina, ik bedoelde dat je dat vbsje kan laten downloaden door de mensen, welke dan in een msgboxje te zien krijgen "u heeft .net 2.8' oid. ;)
 
Ohja, vannochtend herinnerde ik me net nog iets: je kan in de user-agent string WEL de net versie vinden. Als je even geduld hebt, zal ik een voorbeeldscriptje schrijven.

Ovegens is dit dus browser-dependent; het kan zijn dat een browser het niet meestuurt. Hier doet FF3 alleen de laatste versie, maar IE ze allemaal.
 
Laatst bewerkt:
Alright, na even klooien: dit werkt:
[JS]/* Vegras' meesterlijke .NET detectie script in JS */

//dit heeft dus data
var ua = navigator.userAgent;
//dit is de goede regexp
var rgx = /\.NET CLR [0-9]\.[0-9]\.[0-9]+/g

//check voor matches, en zet ze in nx
var nx = ua.match(rgx);

//output
document.write("U heeft " + nx.length + " .NET gevalletjes:<br />");
for(var i=0;i<nx.length; i++)
{
document.write(nx + "<br />");

}[/JS]
het deel na output kan je aanpassen, wat jij wilt.


FYI: dit kan dus ook met php; daarin kan je ook de user-agent string opvragen. Dat is (opzich) 'veiliger' dan met js, dat kan je namelijk uitzetten. Niet dat het zowiezo erg 'veilig' is, maar voor de meeste mensen zal dit wel werken.
 
Laatst bewerkt:
Alright, na even klooien: dit werkt:
[JS]/* Vegras' meesterlijke .NET detectie script in JS */

//dit heeft dus data
var ua = navigator.userAgent;
//dit is de goede regexp
var rgx = /\.NET CLR [0-9]\.[0-9]\.[0-9]+/g

//check voor matches, en zet ze in nx
var nx = ua.match(rgx);

//output
document.write("U heeft " + nx.length + " .NET gevalletjes:<br />");
for(var i=0;i<nx.length; i++)
{
document.write(nx + "<br />");

}[/JS]
het deel na output kan je aanpassen, wat jij wilt.


FYI: dit kan dus ook met php; daarin kan je ook de user-agent string opvragen. Dat is (opzich) 'veiliger' dan met js, dat kan je namelijk uitzetten. Niet dat het zowiezo erg 'veilig' is, maar voor de meeste mensen zal dit wel werken.


Bedankt!!!

Dit is het uiteindelijk geworden:

<script type="text/javascript">
[JS]<!--
/* Vegras' meesterlijke .NET detectie script in JS */
document.write("<p><b>Welke versie van het .NET Framework heb ik?</b><br/>");
//Indien windows:
if (navigator.appVersion.indexOf("Win") >-1)
{
var ua = navigator.userAgent;
var rgx = /\.NET CLR [0-9]\.[0-9]+/g;
var nx = ua.match(rgx);
var arr = new Array();
try
{
if (nx.length > 0)
{
//De gevonden .NET Frameworkversies gesorteerd weergeven
document.write("<ul>");
for (var i=0; i<nx.length; i++)
{
arr = nx.replace(" CLR "," Framework ");
}
arr.sort();
for (var j in arr)
{
document.write("<li>" + arr[j] + "</li>");
}
document.write("</ul></p>");
}
else
{
//Indien geen gevonden... browser ondersteunt het niet of geen .NET Framework geïnstalleerd
document.write("Voer <a href='netdetectie.exe' title='.NET Framework detectieprogramma'>dit programma</a> uit om het te weten te komen.<br/><br/></p>");
}
}
catch (err)
{
//Indien error: nx.length = null (in Chrome)... browser ondersteunt het niet of geen .NET Framework geïnstalleerd
document.write("Voer <a href='netdetectie.exe' title='.NET Framework detectieprogramma'>dit programma</a> uit om het te weten te komen.<br/><br/></p>");
}
}
else
{
//Indien geen windows
document.write("Het .NET Framework kan alleen op Windows voorkomen. Uw computer is geen Windows en dus heeft u geen .NET Framework ge&iuml;nstalleerd!<br/><br/></p>");
}
-->[/JS]</script>
<noscript>
<p><b>Welke versie van het .NET Framework heb ik?</b><br/>
Voer <a href='netdetectie.exe' title='.NET Framework detectieprogramma'>dit programma</a> uit om het te weten te komen.<br/><br/></p>
</noscript>



In internet explorer (8.0 op Vista) toont dit bij mij dit lijstje:
• .NET Framework 1.1
• .NET Framework 2.0
• .NET Framework 3.0
• .NET Framework 3.5

en in Chrome (4.0 op Vista) toont hij een link naar een programmaatje (dat ik nog moet maken) dat het ook kan controleren.
 
Laatst bewerkt:
Zupah. Erg netjes.

ie8
Welke versie van het .NET Framework heb ik?

.NET Framework 2.0
.NET Framework 3.0
.NET Framework 3.5
ff3.5
Welke versie van het .NET Framework heb ik?

* .NET Framework 3.5
Maargoed, omdat ik het leuk vind: ik heb een beetje een 'optimalisatie' gemaakt van jou versie; nu kan je het leuk in een javascript-bestand (.js) op een bestaande pagina toevoegen. Check http://bin.void-studios.com/net/ (check broncode) - jat wat je jatten kunt, mocht je het een leuk idee vinden.
 
Zupah. Erg netjes.

Maargoed, omdat ik het leuk vind: ik heb een beetje een 'optimalisatie' gemaakt van jou versie; nu kan je het leuk in een javascript-bestand (.js) op een bestaande pagina toevoegen. Check http://bin.void-studios.com/net/ (check broncode) - jat wat je jatten kunt, mocht je het een leuk idee vinden.

Bedankt, maar als ik in de broncode kijk dan zie ik een verwijzing naar het bestandje netdetectie.js, maar ik kan deze niet vinden. (Vergeten te uploaden?).
Er staat nu alleen
Voor programma X heeft u .NET framework 3.5 nodig. U heeft dit
Voor programma Y heeft u .NET framework 9.3 nodig. U heeft dit
 
Laatst bewerkt:
Oef. Blijkbaar een probleem met renamen, want het bestand (met javascript) heette 'Nieuw Textbestand.txt'.

nu is het aangepast, zie dus HIER :thumb:
 
Oef. Blijkbaar een probleem met renamen, want het bestand (met javascript) heette 'Nieuw Textbestand.txt'.

nu is het aangepast, zie dus HIER :thumb:

Over je script heb ik een klein beetje commentaar:
Voor programma X heeft u .NET framework 3.5 nodig. U heeft dit niet
Voor programma Y heeft u .NET framework 9.3 nodig. U heeft dit niet
Als je niet IE of FF gebruikt (maar bijvoorbeeld Opera, Safari of Chrome) dan weergeeft hij de .NET Frameworkversie niet, en dus zou je geen .net framework geïnstalleerd hebben.


[NIET_JS]In de tussentijd heb ik ook het detectieprogrammaatje gemaakt dat uitgevoerd kan worden als het niet via de browser gevonden kan worden. Ik moest het maken in vb6, en dat is toch anders dan vb.net... maar het is gelukt (en het werkt op alle windowsversies met versienummer 4.0 of hoger (dus vanaf windows 95 en Windows NT 4))[/NIET_JS]
 

Bijlagen

je vb6 werkt hier goed hoor.
Over je script heb ik een klein beetje commentaar
aye, dat is een punt ja. Maargoed, het was maar een idee. Je kan het uiteraard uitbreiden.


:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan