我google了很多,我找不到这个问题的任何答案......
我有一个 C++ 控制台应用程序,它读取 1GB SD 卡,修复不正确关闭的文件并相应地写入 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);
然后,我从 SD 中读取 BTB 信息,并查找未正确关闭的文件。
最后在尝试写入 SD 时
WriteFile(hDevice,buffer,SD_SECTOR_SIZE, &temp, 0)
我收到拒绝访问(错误 #5)
CreateFile() 上的字符串是 \.\g: 因为 g 字母对应于我机器上的 SD 卡。一切正常,正如我之前所说,它可以在 XP 上运行。我也尝试过使用:DeviceIoControl with FSCTL_LOCK_VOLUME,但这会导致内存故障错误。
希望这有助于理解并感谢您的帮助