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-Key: 569539

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

Printed on: June 5, 2023 at 22:06 o'clock

Member: godlie
godlie May 05, 2020 updated at 22:05:11 (UTC)
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
Member: mayho33
mayho33 May 05, 2020 at 22:35:06 (UTC)
Goto Top
Das sieht ja sehr vielversprechend aus. Danke! Werde mich da mal durch wühlen. SQL ist nicht meine Stärke.

Grüße!
Member: godlie
godlie May 06, 2020 updated at 02:08:50 (UTC)
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
Member: mayho33
mayho33 May 06, 2020 at 03:20:10 (UTC)
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.
Member: godlie
godlie May 06, 2020 at 03:43:42 (UTC)
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"
Member: mayho33
mayho33 May 06, 2020 at 07:26:39 (UTC)
Goto Top
­čśü Ohh ja!

Wenn ich nur endlich die Zeit finden würde um mal rein zu schauen.
Mitglied: 143728
Solution 143728 May 06, 2020 updated at 13:50:05 (UTC)
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
Member: mayho33
mayho33 May 06, 2020 at 14:23:52 (UTC)
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!