禁止发言
|
阅读:3949回复:30
求一个对C盘进行保护(禁止用户写)的例程,急用!谢谢了!用户被禁言,该主题自动屏蔽! |
最新喜欢:rhpeng |
沙发#
发布于:2003-05-28 09:17
不要相信他,到时会让你过的!
不让用户写c盘,如果c盘是系统盘,你让不让操作系统写c盘,如果不让,你的麻烦大了! |
|
|
禁止发言
|
板凳#
发布于:2003-05-28 10:24
用户被禁言,该主题自动屏蔽! |
地板#
发布于:2003-05-28 10:28
哦!从头写一个驱动也不难啊!就几天的事情而已啊!
|
|
地下室#
发布于:2003-05-28 10:30
nustzhua好象也知道怎么做吧!还是让nustzhua告诉你吧!之前我也说了!你可以参考filemon或者ddk里面的diskperf例子啊!
|
|
禁止发言
|
5楼#
发布于:2003-05-28 14:20
用户被禁言,该主题自动屏蔽! |
禁止发言
|
6楼#
发布于:2003-05-28 14:27
用户被禁言,该主题自动屏蔽! |
7楼#
发布于:2003-05-28 18:14
工程文件而已!
我想问的是你怎么知道一个读写操作时由用户产生的还是由系统产生的呢? |
|
|
禁止发言
|
8楼#
发布于:2003-05-28 20:53
用户被禁言,该主题自动屏蔽! |
禁止发言
|
9楼#
发布于:2003-05-28 20:56
用户被禁言,该主题自动屏蔽! |
禁止发言
|
10楼#
发布于:2003-05-28 21:10
用户被禁言,该主题自动屏蔽! |
11楼#
发布于:2003-05-29 01:23
如果是系统盘,你要区分出用户与系统,比登天还难。 :D
|
|
禁止发言
|
12楼#
发布于:2003-05-29 02:02
用户被禁言,该主题自动屏蔽! |
13楼#
发布于:2003-05-29 16:55
其实有一个好的折衷的办法,如下:
如果C盘是系统盘,则要求应用程序端配置一个非许可进程表,设定不可以访问C盘的用户进程,除此之外的所有进程都允许写C盘。至于在驱动中如何得进程名自己去看Filemon的代码(你们的老师绝对不会要求到连系统要死也还不允许写。) 如果C盘不是系统盘,则上述要求不必须,但是有一点,Windows系统自身的一些文件,如临时文件,内存交换文件等可能被设定存在C盘上,这些得允许它通过。如果嫌考虑地太多,就用上面一种方法,合情又合理:) |
|
|
禁止发言
|
14楼#
发布于:2003-05-29 17:19
用户被禁言,该主题自动屏蔽! |
15楼#
发布于:2003-05-29 18:07
几乎不用改,不过你可能需要做以下工作
1。在应用层增配置界面,让用户输入或选择“非许可进程” 2。把用户设定的“非许可进程”送到驱动程序里保存,这可能需要增加一个IOCTL码或用WriteFile实现;驱动层当然需要分配一个空间来存储这些设置。最简单的办法是用一个静态全局数组,并设定一个上限(比如说,最多允许设置10个非许可进程)。 比如说: typedef struct _refProc { char procname[32]; } REF_PROC;//ref indicate refused. REF_PROC refproc[10];//存为全局变量,不用你去考虑什么ExAllocatePool之类的调用。 至于怎么把用户的设置赋进来,旁去考虑一下。 3。在IRP_MJ_CREATE里,检测打开文件的里程名,如果和设置里的任意一个进程名匹配,返回失败。(直接返回失败会使应用层看到一个莫名奇妙的消息框),为了做的漂亮一点,你可能需要费神一点。不过,你做到这里就可以了。 |
|
|
禁止发言
|
16楼#
发布于:2003-05-30 20:15
用户被禁言,该主题自动屏蔽! |
禁止发言
|
17楼#
发布于:2003-06-02 15:26
用户被禁言,该主题自动屏蔽! |
18楼#
发布于:2003-06-02 15:58
如果这样做,我觉得你就把问题复杂化了,我也没找到办法确定系统已经初始化完毕,并且,这个概很模糊。倒是进程的数据结构本身应该提供一种标志(比如里程优先级)以区别系统进程和用户进程。不过这种标志容易被修改,有些恶意的程序可以通过修改权限级来执行一些本来无法调用的功能。
|
|
|
禁止发言
|
19楼#
发布于:2003-06-02 19:43
用户被禁言,该主题自动屏蔽! |
上一页
下一页