Avatar billede marduk666 Nybegynder
22. september 2003 - 23:43 Der er 4 kommentarer og
1 løsning

Hent filtype

Hvordan henter man filtype navnet fra windows? Hvis filen f.eks. hedder *.txt så udskriver den "Tekstdokument" som man kan finde i Mappeindstillinger.
Avatar billede omen Nybegynder
23. september 2003 - 02:04 #1
Filtyper vil du finde i registreringsdatabasen... for at komme ind og rode med den kan du åbne regedit.exe Søg efter .txt og Tekstdokument, og find ud af hvad der skal slettes for at komme af med filtypen. Husk at tage backup af de nøgler/værdiere du sletter... højreklik på den og tryk Export for at back den op!
For at rode med registry fra .NET, du kan bruge namespace Microsoft.Win32, find evt. mere i .NET dokumenationen og på MSDN!
Avatar billede nielslbeck Nybegynder
23. september 2003 - 15:12 #2
omen>> Hvad er det lige du vil slette i registreringsdatabasen???


Har lavet et par funktioner til dig... den første går ud fra, at det efternavn du spørger efter virkelig findes i registreringsdatabasen - ellers går den ned! Men til gengæld er det en lækker one-liner ;-)

public static string GetDescription(string filetype) {
    return Registry.ClassesRoot.OpenSubKey(Registry.ClassesRoot.OpenSubKey(filetype).GetValue("").ToString()).GetValue("").ToString();
}

Den anden tager højde for, at det forespurgte efternavn evt ikke findes i registreringsdatabasen, og der dermed en noget bedre version - den returnerer null hvis efternavnet ikke findes:

public static string GetDescription(string filetype) {
    RegistryKey key = Registry.ClassesRoot.OpenSubKey(filetype);
    if (key == null)
        return null;

    key = Registry.ClassesRoot.OpenSubKey(key.GetValue("").ToString());
    if (key == null)
        return null;

    return key.GetValue("").ToString();
}

Begge version kræver at du har skrevet
using Microsoft.Win32;
øverst i din .cs-fil.

Begge version tager også et efternavn som argument - f.eks. ".txt" - ikke blot "txt", altså med punktum (kan let ændres), da følgende så vil udskrive dokumenttypen:

Console.WriteLine(GetDescription(new FileInfo("c:\fil.txt").Extension));
Avatar billede marduk666 Nybegynder
23. september 2003 - 20:02 #3
Den er super! indtil der kommer en fil hvor endelsen ikke findes i registeringsdatabasen. Den går i stå ved:
key = Registry.ClassesRoot.OpenSubKey(key.GetValue("").ToString());
Avatar billede marduk666 Nybegynder
24. september 2003 - 14:36 #4
Ligemeget fandt ud af det. Skulle bare tilføje en standard værdi til GetValue.
Avatar billede nielslbeck Nybegynder
24. september 2003 - 21:48 #5
Okay, udmærket :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester