vista RC2 下读写硬盘扇区问题

mousefather 2006-11-03 08:42:03
用api CreateFile, ReadFile, WriteFile的方式读写硬盘扇区在RC1下都还没问题,在RC2下就不能用了,有没人知道怎么回事?好像有听说是微软为了出于安全考虑把写的部分给禁止了,难道只能通过写驱动的方式来写扇区吗?有没人研究过这方面的?大家来讨论一下吧
...全文
525 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
mlb2729 2006-12-07
  • 打赏
  • 举报
回复
是不是漏洞,最好的辦法是詢問微軟看看,他們怎麼回答的....
mousefather 2006-12-05
  • 打赏
  • 举报
回复
vcPlayer(没有星星,努力做太阳!)
我试了一下确实可以!多谢!不过还有2个问题请教一下,第一个,如果是DLL,要怎么配啊,这个是不是只有exe才可以
第二个问题,我把这个方法在RTM版上试了一下,居然失败了!是不是这个方法也是利用微软的什么安全漏洞之类的?
请不吝赐教!分数不够可以再加!
空心兜兜 2006-12-01
  • 打赏
  • 举报
回复
…………


只好帮顶…………
vcPlayer 2006-12-01
  • 打赏
  • 举报
回复
啊,还没解决?
=======================
这是因为你先前运行程序时,并没有这个“manifest”文件,可能在系统中给你设置了一个默认配置(这点还没深入研究)!有个变能方法:

1、更改你的程序名称;
2、同时创建与该程序名称相同的“manifest”文件。请注意我前面讲的命名规则!!!!!

又或者:

鼠标右键单击程序图标,在弹出的菜单中选择“Run as Administrator”也行,在接下来的对话框中选择“Allow”即可。
mousefather 2006-11-27
  • 打赏
  • 举报
回复
我试了一下,好像不行啊,没有弹出对话宽阿
顺便问一下,这个是什么原理,是不是利用什么系统的漏洞,万一微软下一版vista把这个漏洞补了那不是没机会了?
vcPlayer 2006-11-24
  • 打赏
  • 举报
回复
补充一下:比如你的程序名称为“AAA.exe”, 则脚本文件名就为“AAA.exe.manifest”
vcPlayer 2006-11-24
  • 打赏
  • 举报
回复
100分给我得了!:)

写一个脚本放在程序的同一个目录下即可。

1、脚本文件的文件名:与程序名相同,再加上后缀“.manifest”;

2、内容:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

3、现在双击程序,在弹出的对话框中选择“Allow”即可。
zjwxxd 2006-11-22
  • 打赏
  • 举报
回复
帮顶
mousefather 2006-11-21
  • 打赏
  • 举报
回复
我们已经解决了,不过是用驱动去做的,真希望能有不用驱动的方法
xyxfly 2006-11-18
  • 打赏
  • 举报
回复
呵呵,我同事目前也在研究这个

sky 2006-11-06
  • 打赏
  • 举报
回复
嗯,支持楼上
夜鹰 2006-11-04
  • 打赏
  • 举报
回复
楼上的,请不要在别人的问题中提问,请重新开帖,下次再发现直接删除。
大熊猫侯佩 2006-11-03
  • 打赏
  • 举报
回复
现在问题是vista提供了什么接口来允许用户访问。
yyszh 2006-11-03
  • 打赏
  • 举报
回复
vista号称最安全的操作系统,肯定要杜绝你写扇区了;否则他还安全吗?
大熊猫侯佩 2006-11-03
  • 打赏
  • 举报
回复
是么?返回什么错误?
jakeyjia 2006-11-03
  • 打赏
  • 举报
回复
帮你顶~

同样关注这个问题,我在vistaRC2下用CreateFile也发现有点不对劲~不知道是我自己用错了?还是真有问题~
jakeyjia 2006-11-03
  • 打赏
  • 举报
回复
我的問題出現在這裡~請知道的各位大哥給看一下~

在vista RC2下試著寫一個獲取連接到本機上的U盤信息的小應用程序,在網上找到好多類似的例子(2000下的),前面的步驟基本都可以順利的完成,但是儅我獲得了設備路徑并想通過它來使用DeviceIoControl來返回U盤詳細信息的過程中出現了問題。
DeviceIoControl(hDevice, // 设备句柄
IOCTL_STORAGE_QUERY_PROPERTY, // 取设备属性信息
&Query, sizeof(STORAGE_PROPERTY_QUERY), // 输入数据缓冲区
pDevDesc, pDevDesc->Size, // 输出数据缓冲区
&dwOutBytes, // 输出数据长度
(LPOVERLAPPED)NULL); // 用同步I/O

這個函數總是不通過~它的第一個參數是設備句柄hDevice,
我是用CreateFile來獲得這個句柄的:
HANDLE hDevice = CreateFile(pDeviceInterfaceDetailData->DevicePath,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);
其中pDeviceInterfaceDetailData->DevicePath是我由SetupDiGetDeviceInterfaceDetail獲得的一個設備路徑,形式為:(這是一個USB設備路徑)
"\\?\usb#vid_0ef5&pid_2202#2004063008241001#{a5dcbf10-6530-11d2-901f-00c04fb951ed}"
通過這個路徑我可以獲得句柄成功,但是傳到DeviceIoControl函數中就無法通過。
但是我直接將該設備直接替換pDeviceInterfaceDetailData->DevicePath為"\\\\?\\I:"也能獲得句柄,並且這個時候DeviceIoControl函數正常~我可以獲取自己想要的值。
這是爲什麽呢?難道這兩种方法取到的設備句柄不一樣麽?倆次的值都是“hDevice=0x0000017”

請諸位大哥幫幫忙阿~我看到好多例子都是這麽寫的,爲什麽我這裡不能成功呢?

或者還有什麽更好的方法來獲取U盤的詳細信息呢?
mousefather 2006-11-03
  • 打赏
  • 举报
回复
发现一个软件可以读写!!
Sector Editor 1.02 build 14
不知道是不是通过驱动来做的,还是通过其他什么后门来实现。大家又兴趣可以去下来试一下,我是在vista RC2上试的。

18,124

社区成员

发帖
与我相关
我的任务
社区描述
Windows客户端使用相关问题交流社区
社区管理员
  • Windows客户端使用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧