Я много гуглил, и я не мог найти ответа на эту проблему...
У меня есть консольное приложение C++, которое считывает SD-карту объемом 1 ГБ, исправляет неправильно закрытые файлы и соответственно записывает таблицу FAT. SD-карта прописывается в начале прошивки в кастомном аппарате. Он работал нормально до Xp и перестал работать в Win Vista/seven. Я попытался повысить привилегии: в учетной записи администратора я запустил окно cmd, используя метод «запуск от имени администратора», но безуспешно. Я также пробовал с манифестом, запрашивающим наивысшие доступные привилегии, но не повезло.
Я прочитал в каком-то посте, что «Windows Vista вообще не позволяет вам получать доступ к дискам из процессов пользовательского режима. Кто-нибудь знает о каком-либо способе обойти это поведение?
Я работаю над обходным путем, однако я хотел бы знать, невозможно ли это или нет
Изменить:
Это мой первый пост здесь, поэтому я не совсем понимаю проблему со ссылками... Но я вообще не отношусь к спаму... просто спрашиваю на сайте, управляемом сообществом :)
Код выглядит так
hDevice = CreateFile(buffer,GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,NULL, OPEN_EXISTING,0,NULL);
Затем я читаю информацию BTB с SD и ищу неправильно закрытый файл.
Наконец при попытке записи на SD
WriteFile(hDevice,buffer,SD_SECTOR_SIZE, &temp, 0)
Я получаю отказ в доступе (ошибка № 5)
Строка в CreateFile() — это \.\g: поскольку буква g соответствует SD-карте на моей машине. Все это работает нормально, и, как я уже говорил, работает на XP. Я также пытался использовать: DeviceIoControl с FSCTL_LOCK_VOLUME, но это дает ошибку ошибки памяти.
Надеюсь, это поможет понять и спасибо за любую помощь