Привет всем. Мне необходимо знать путь до файла сервиса. Я его получаю с помощью функции QueryServiceConfig(). Пути, полученные данным способом, имеют следующий вид: system32\DRIVERS\cdrom.sys \??\C:\WINDOWS\system32\Drivers\DgiVecp.sys \SystemRoot\system32\DRIVERS\disk.sys \??\C:\WINDOWS\system32\drivers\EIO.sys \SystemRoot\system32\DRIVERS\fltMgr.sys \SystemRoot\system32\DRIVERS\ftdisk.sys \??\C:\WINDOWS\system32\Drivers\hcmon.sys Проблема в том, что их не понимает функция CreateFile(). Есть ли возможность преобразования формата путей или может быть есть альтернативные способы получения пути (кроме парсинга ветви реестра)?
system32\DRIVERS\cdrom.sys - путь относительно системной директории. Получить ее можно через GetEnvironmentVariable( "SystemRoot", & Buffer, ... ). \SystemRoot\system32\DRIVERS\ftdisk.sys - полный путь с переменной окружения. Можешь ее убрать, тогда смотри выше. \??\C:\Windows\system32\Drivers\hcmon.sys - такой путь можно открыть преобразовав его в \\?\C:\Windows\system32\Drivers\hcmon.sys. Использовать Unicode версию CreateFile. Правда неуверен, насколько это корректно. К тому же, можешь просто убрать префикс \??\. Это еще проще.