mayho33
Goto Top

C-Sharp Windows Suche nachbauen

Hi @ All

Ich will natürlich nicht die komplette Windows-Suche nachbauen, aber ich frage mich wie ich folgendes in C# errichen kann und hoffe auf eure Unterstützung:

Wenn ich in der Windows-Suche (Start-Button => Text eingeben => Ergebnisse werden gelistet) "editor" eingebe, wird mir in der Liste sofort die App Edit aka Notepad.exe angezeigt:
suche

In meiner C#-Methode möchte ich in etwa das gleiche nachbauen. Wird also Process.StartInfo().FileName = "Editor" übergeben, soll erkannt werden, dass es sich eigentlich um Notepad.exe handelt und in weiterer Folge will ich das WorkingDirectory davon um das in Process.StartInfo().WorkingDirectory eintragen zu können. Aktuell gibt es nämlich Probleme beim Ausführen von Process.Start(), wenn Process.StartInfo().WorkingDirectory nicht festgelegt oder NULL ist.

Im Netz habe ich eine Methode gefunden die für jede System-Executable den Pfad feststellt (url). Ich kann also in 99% der Fälle das WorkingDirectory eindeutig feststellen:

public static string WhereSearch(string filename)
{
    var paths = new{ Environment.CurrentDirectory }
            .Concat(Environment.GetEnvironmentVariable("PATH").Split(';'));  
    var extensions = new{ String.Empty }
            .Concat(Environment.GetEnvironmentVariable("PATHEXT").Split(';')  
                       .Where(e => e.StartsWith(".")));  
    var combinations = paths.SelectMany(x => extensions,
            (path, extension) => Path.Combine(path, filename + extension));
    return combinations.FirstOrDefault(File.Exists);
}

Das funktioniert aber nur bei Exetutables die per Name (REG.exe, Notepad.exe, usw) unter System32, SysWow64, %ProgramFiles% oder %ProgramFiles (x86)% zu finden sind.

Hat jemand eine Idee zu meinem Problem? Geht das überhaupt? Ich habe nämlich die Befürchtung, dass es sich da nur um eine Art "Most-Used"-Liste handelt.

Danke für eure Hilfe!

Grüße!

Mayho

Content-ID: 569539

Url: https://administrator.de/contentid/569539

Ausgedruckt am: 23.11.2024 um 23:11 Uhr

godlie
godlie 06.05.2020 aktualisiert um 00:05:11 Uhr
Goto Top
Hallo,

evtl. wirst du hier ein ewing fündig, https://docs.microsoft.com/en-us/windows/win32/search/-search-sql-window ... hier solltest du die Pfade zu den etwaigen Programmen bekommen.

Ich hab grad keine Windows Maschine zum Testen parat
mayho33
mayho33 06.05.2020 um 00:35:06 Uhr
Goto Top
Das sieht ja sehr vielversprechend aus. Danke! Werde mich da mal durch wühlen. SQL ist nicht meine Stärke.

Grüße!
godlie
godlie 06.05.2020 aktualisiert um 04:08:50 Uhr
Goto Top
hoi SQL ist einfach :

SELECT Socke FROM Kasten WHERE Frabe = 'Blau' AND Seite = 'Links' ORDER BY Alter LIMIT 1;  

Erklärung :

Such dier Socke im Kasten ( Tabelle ) welche Blau ist, und auf den Linken Fuss gehört, Ordne Sie nach Alter, aber ninn nur eine davon
mayho33
mayho33 06.05.2020 um 05:20:10 Uhr
Goto Top
OK! Ein Select bekomme ich schon zusammen. Notfalls auch noch mit Join. Die Frage ist von welcher DB? Wie ist sie aufgebaut? Wo liegt sie?

Das wird wohl mein vorrangige Problem werden. Aber ich lasse mich mal überraschen.
godlie
godlie 06.05.2020 um 05:43:42 Uhr
Goto Top
Ich halte mich da einen Kommentar:

Lass Dich überaschen von Rudi Carell

Entwicklung hat immer ewas von Suchen und Finden, nicht nur "ausprogramieren"
mayho33
mayho33 06.05.2020 um 09:26:39 Uhr
Goto Top
😁 Ohh ja!

Wenn ich nur endlich die Zeit finden würde um mal rein zu schauen.
143728
Lösung 143728 06.05.2020 aktualisiert um 15:50:05 Uhr
Goto Top
Beispiel hier gefunden (zwar mit VBS, aber das lässt sich ja leicht auf c# umschreiben):
VBA - Über, in explorer.exe (Suchfunktion) gefundene Einträge drucken
mayho33
mayho33 06.05.2020 um 16:23:52 Uhr
Goto Top
Zitat von @143728:

Beispiel hier gefunden (zwar mit VBS, aber das lässt sich ja leicht auf c# umschreiben):

Hmmm. Da sucht der User ja nur nach Mustern im Filesystem.
Ich glaube ja, dass es sich um das im Bild in meiner Frage, eher um sowas wie eine Junction handelt. Den Filename 'Editor' gibt es ja an sich nicht Ad hoc. Das System weiß aber, dass es sich bei 'Editor' in der Suche um die Notepad.exe handelt.

Trotzdem Danke!