Я много гуглил и не нашел ответа на эту проблему ...
У меня есть консольное приложение C ++, которое читает SD-карту объемом 1 ГБ, которая исправляет неправильно закрытые файлы и записывает таблицу FAT соответственно,SD-карта вначале записывается с помощью прошивки на заказном устройстве.Он работал нормально до Xp и перестал работать в Win Vista / 7.Я попытался повысить привилегии: в рамках типа учетной записи администратора я запустил окно 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: поскольку данная буква соответствует SD-карте на моем компьютере.Все это работает хорошо, и, как я уже говорил, это работает на XP.Я также пытался использовать: DeviceIoControl с FSCTL_LOCK_VOLUME, но это выдает ошибку памяти.
Надеюсь, что это помогает понять и спасибо за любую помощь