У меня есть приложение, работающее в качестве службы Windows, которое хочет прочитать файл, указанный в относительном пути.Поскольку служба работает под C: \ Windows \ system32 (на Server 2003 и Windows 7), я полагаю, что она должна читать файл оттуда.Однако чтение файла всегда заканчивается неудачей.
Я собрал простой тестовый код, чтобы попытаться открыть файл для чтения, используя абсолютный путь.Хотя служба работает успешно для файлов, таких как C: \ Temp \ foo.txt , она всегда завершается ошибкой для файлов, таких как C: \ Windows \ foo.txt и C: \Windows \ system32 \ foo.txt .GetLastError()
возвращает 2
.
Я столкнулся с проблемой доступа?Я не мог найти авторитетную документацию по этому вопросу.Есть ли обходной путь?
Обновление:
Код проверки файла является общим и простым:
std::ofstream out;
//...
std::string fileName("C:\\Windows\\system32\\Foo.txt");
hFile = CreateFile(fileName.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE) {
out << "Could not create file handle! (" << GetLastError() << ")" << std::endl;
}
else {
out << "Successfully opened file!" << std::endl;
CloseHandle(hFile);
}