能力值:
(RANK:10 )
|
-
-
2 楼
普通应用程序使用如下语句,
createfiel(驱动设备名,参数...),然后
deviceiocontrol(驱动设备,参数...)
象这样,r3层和r0层交互是很通常的做法。
可是win7下面,creatfile(驱动设备,...)一定要administrator才能成功,
那么普通用户就不能运行大量的含有和驱动层通信的应用程序了吗?
qq在r3层和qqprotect.sys的r0层如何通信的?
我想不可能把,难道非要administrator才能打开驱动层设备,那么多普通用户,
如何使用驱动层设备啊,我的驱动程序都已经编好了,r3层不能调用,
win7的uac是怎么搞的,这么简单的r3和驱动层deviceiocontrol都不能用吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
你可以把程序的运行权限设置为管理员最高级别,开发环境中设置或者是执行文件属性中设置,具体看你什么开发工具。
另外,win API的调用应该和这个无关。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
你看看有木有,manifest之类的文件,这个应该可以改程序运行权限。
|
能力值:
(RANK:10 )
|
-
-
5 楼
API的调用就是和这个有关啊。creatfile(mydevice,其他参数...)
执行这个creatfile,如果是administrator,就返回成功,如果不是管理员,就返回失败。
createfile("普通文件",...),如果是创建普通磁盘上的文件,那么不管是系统管理员,还是普通用户,都返回成功,如果创建的是我自己的驱动设备,就只有administrator才能创建成功啊。
这样就剥夺了普通用户使用任何“驱动设备”的能力,普通用户只能打开普通的磁盘文件,不能打开驱动设备啊。
另外,有一个疑问,就是如果要弹出UAC窗口,提示是否以系统管理员运行,是必需在程序开始的时候弹出的,通过设置编译开关也好,或者通过右键菜单“以管理员身份运行”也好,这都是在程序还没开始前就提问UAC,并输入管理员密码,再运行程序。
我就想,能否是这样,我的程序以普通方式运行,运行到一半的时候,我在程序里面调用某个函数,弹出UAC窗口,提示输入管理员密码,获得管理员权限,然后在运行createfile(mydeive,....)。就是不知道有这个函数没有?是运行一半的时候,把本身这个进程改为管理员权限,而不是运行一半的时候,新开一个进程,使新开的进程具有管理员权限。
|
能力值:
( LV4,RANK:40 )
|
-
-
6 楼
做不到!不考虑Bug的话,微软的文档里面说提权是以进程为边界的,所以不可能运行到一半提权为管理员。有些程序看起来做到了这一点,实际上是新开了一个进程,你可以看一下前后的PID是不一样的。要创建管理员权限的进程,除了设置manifest为require admin以外,还可以调用ShellExeceute新建进程,operation参数传入“runas”(记不清了,再查查)
|
|
|