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:
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:
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
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:
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
Please also mark the comments that contributed to the solution of the article
Content-ID: 569539
Url: https://administrator.de/contentid/569539
Printed on: December 9, 2024 at 03:12 o'clock
8 Comments
Latest comment
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
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
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
VBA - Über, in explorer.exe (Suchfunktion) gefundene Einträge drucken