bergetun Skrevet 2. november 2004 Del Skrevet 2. november 2004 Lurer på det er noen snille sjeler her som hadde giddet å gjøre meg en liten tjeneste. Jeg er en .NET programmerer (C#) og har desverre ikke Visual Basic 6.0 (ikke VB.NET) ellers kunne jeg helt sikkert gjort dette selv. Det programmet skal gjøre er å sjekke om dot net framwork er installert på maskinen. (Sjekke om [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\v1.1] finnes i registry) Visst .NET er installert vil jeg at programmet skal kjøre filen go.exe (som er ett .net prgram) som ligger i samme katalog, og visst ikke .net er installer vil jeg vise en feilmelding og forklare at dot net ikke er installert osv med en knapp der de kan trykke på som tar de til microsoft sine .net sider hvor de kan hente ned framwork for .net. Lenke til kommentar
aadnk Skrevet 2. november 2004 Del Skrevet 2. november 2004 Muligens noe som følger? Option Explicit Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long ' Need to open the key to be able to restore to it. Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Const SW_SHOWNORMAL = 1 Private Const HKEY_LOCAL_MACHINE = &H80000002 Private Const KEY_NOTIFY = &H10 ' URLer og register-nøkler Private Const NetURL = "http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3&displaylang=en" Private Const NetRegistryKey = "SOFTWARE\Microsoft\.NETFramework\policy\v1.1" Private Sub Form_Load() Dim hKey As Long If RegOpenKeyEx(HKEY_LOCAL_MACHINE, NetRegistryKey, 0&, KEY_NOTIFY, hKey) <> 0 Then ' Funksjonen mislykkes i åpningen av nøkkelen If MsgBox("Rammeverket NET.1.1 er ikke installert. Vil du installere det nå?", vbCritical + vbYesNo, "NET 1.1") = vbYes Then ' Hent fram siden hvor NET.1.1 kan lastes ned ShellExecute Me.hwnd, vbNullString, NetURL, vbNullString, "C:\", SW_SHOWNORMAL End If Else ' Ingen feil - nøkkelen eksisterer Shell ValidPath(App.Path) & "go.exe" ' Kjør programmet i samme katalog End If ' Rydd opp RegCloseKey hKey End Sub Public Function ValidPath(Path As String) As String ValidPath = Path & IIf(Right(Path, 1) = "\", "", "\") End Function Eneste jeg oppdaget var at koden ikke registrerte NET når versjon 2.0 var installert, ettersom nøkkelen "v.1.1" da befant seg i "Standards" nøkkelen. Jeg tror derfor du heller bør endre NetRegistryKey til dette: Private Const NetRegistryKey = "SOFTWARE\Microsoft\.NETFramework\policy" Lenke til kommentar
GeirGrusom Skrevet 4. november 2004 Del Skrevet 4. november 2004 Vil ikke "Software\Microsoft\.NETFramework" kun eksistere hvis .NET Framework er installert? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå