Sie können die DLL-Injection verwenden, um aufzurufen, SetCurrentDirectory
nachdem der Prozess bereits gestartet wurde. Dies würde erfordern, dass Sie eine Injektoranwendung sowie die zu injizierende DLL erstellen. Es gibt einige Tutorials. wahrscheinlich sind die zwei besten, die ich gefunden habe:
Sie benötigen eine angemessene Menge an C ++ - Programmierhintergrund (und eine funktionierende Build-Umgebung), um dies zu bewältigen.
Dies setzt jedoch voraus, dass der Dienst das aktuelle Verzeichnis betrachtet. Eine andere Möglichkeit ist, dass es verwendet %path%
. Sie sagen, dass es "an beginnt system32
, ein paar weitere Orte ausprobiert und schließlich ein eigenes Verzeichnis", also scheint mir dies wahrscheinlicher.
Vergleichen Sie die Verzeichnisse, die Sie sehen, procmon
mit Ihren %path%
. Wenn sie identisch sind, sollten Sie entweder das SYSTEM %path%
oder das %path%
des Benutzers ändern, der den Dienst ausführt, sodass das Verzeichnis, in dem er durchsucht werden soll, an erster Stelle steht.
Ich glaube jedoch, dass Fred Recht hat - es ist unwahrscheinlich, dass Sie dadurch einen signifikanten Leistungsvorteil sehen, es sei denn, dies geschieht sehr häufig. Einfache Dateiöffnungsvorgänge sind nicht besonders teuer, insbesondere wenn es sich um einen lokalen Pfad handelt und die Datei nicht vorhanden ist.