Anda bisa menggunakan injeksi DLL untuk memanggil SetCurrentDirectory
setelah proses sudah diluncurkan. Ini akan mengharuskan Anda untuk membangun aplikasi injektor, ditambah DLL untuk menyuntikkan. Ada beberapa tutorial; mungkin dua yang terbaik yang saya temukan adalah:
Anda membutuhkan latar belakang pemrograman C ++ yang layak (dan lingkungan kerja yang baik) untuk bisa melaluinya.
Namun, ini mengasumsikan bahwa layanan sedang melihat direktori saat ini. Kemungkinan lain adalah menggunakan %path%
. Anda mengatakan bahwa itu "dimulai pada system32
, mencoba beberapa lokasi lagi, dan akhirnya direktori sendiri", jadi ini sepertinya lebih mungkin bagi saya.
Bandingkan direktori yang Anda lihat procmon
dengan %path%
. Jika sama, pertimbangkan untuk memodifikasi SYSTEM %path%
atau %path%
pengguna yang menjalankan layanan, sehingga direktori yang Anda inginkan untuk dicari adalah yang pertama.
Saya percaya Fred benar, namun - Anda tidak mungkin melihat manfaat kinerja yang signifikan dengan melakukan semua ini, kecuali itu terjadi sangat sering. Operasi buka file sederhana tidak terlalu mahal, terutama jika itu adalah jalur lokal dan file tersebut sebenarnya tidak ada.