首页
社区
课程
招聘
[旧帖] [求助]win7如何编程获取管理员权限 0.00雪花
发表于: 2013-10-8 14:02 2295

[旧帖] [求助]win7如何编程获取管理员权限 0.00雪花

2013-10-8 14:02
2295
win7的UAC很讨厌,我的一个程序需要打开驱动设备,
使用createfiel(驱动设备名,参数...)这个api打开设备。
结果无缘无故出错,后来才知道使用administrator才能打开成功。
如果在程序代码中获得administrator权限,或者有什么别的
api可以在普通用户中打开驱动设备名?
是要编程获取administrator或者弹出uac窗口,而不是
另外启动一个程序,启动的时候制定需要administrator.而是本程序自己弹出一个uac窗口,要求
用户输入administrator的密码以获取管理员权限,有这样的api吗?

[培训]科锐软件逆向54期预科班、正式班开始火爆招生报名啦!!!

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