win7中如何获取管理员权限
用MFC写了一个ocx控件给js调用,在XP下都没有问题,但是在win7下就有权限的问题了。
我打开IE浏览器如果不是以管理员权限运行的话,则打开页面调用OCX创建一个文件或文件夹的时候会返回错误信息5(拒绝访问),但是用管理员权限运行的时候则没有问题。
当然我们不可能要求用户还要右键选择“以管理员权限运行”来打开IE,也不可能让用户要去设置UAC级别来运行,所以想请教下有谁知道该怎么弄。
网上找了一下资料说是有5种方法,但是我试了下不知道是不是因为设置错误还是咋回事都没能成功。方法如下:
1.在HKCU \Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers注册表分支下添加键值:
名字是程序的全路径,值数据是“RunAsInvoker”
备注:
首先,我的注册表相应目录下没有Layers选项,所以我自行添加了一个;
其次,我是在Layers种新建了一个字符串项,名字:C:\Program Files\Internet Explorer\iexplore.exe
值:RunAsInvoker
最后运行后发现无效,是否设置有啥问题?
2.在程序的manifest文件或者内嵌的manifest信息里加入“level=highestAvaible”或者“level requireAdministrator”安全级别。
备注:
我使用的vs2005,奇怪找资料上说如果是vs2005或vs2008在“属性--连接器--清单文件”里面可以直接设置最高级别的权
限,可是我发现我清单文件里面只有“生成清单、清单文件、附加清单依赖项、允许隔离”这4项,不知道改怎么把UAC权
限写到manifest文件中,当然不能是编译完才去修改manifest文件,否则我下次在编译的时候改文件又会被还原了。
有谁知道该怎么弄,并且试验过能成功的,能否分享下,最好最好是不要弹出让用户选择是否提升权限级别提示,不太友好。一大部分用户会担心病毒木马等等问题。。。
------解决方案--------------------
这种情况应该有另一个进程,由浏览器OCX等通知它来创建文件,文件夹
------解决方案--------------------
执行的时候IE会弹提示的,用户选择了允许就可以了。
另外:你说那个管理员权限 2005我不知道,2008是有的,选上requireAdministrator就会在每次执行之前都弹出一个需要管理员权限才能运行的对话框。
------解决方案--------------------
------解决方案--------------------
这个问题我也在关注,在win7没有权限注册,几乎已经放弃。。打个标签
------解决方案--------------------
------解决方案--------------------
创建一个文件或文件夹的时候会返回错误信息5
(1)你是将文件和文件夹创建在系统目录下么?你可以换个目录,如《我的文档》里面创建,你去提升权限,还不如换个文件夹来的方面(个人意见)。
(2)权限是和进程相关的,你的OCX依赖于IE进程,你是要给IE提权
(3)改进程token开获取管理员权限的进程也需要相关权限的,你的OCX貌似应该修改不了。
(4)用服务应该不错,但是需要考虑进程间的通信问题,上次我也遇到了这样的问题,不过直接创建了个驱动,让它负责创建文件(我的程序本来就需要驱动,所有加个驱动功能无所谓)。
------解决方案--------------------
就下载2次,这里以前也考虑过用公共帐户,但是不是所有帐户都有权限写这个All Users的,所以最后还是根据用户写在不同的位置,一般机器上不会有太多用户的,而且又是后台操作,影响不大。网站方面的知识我就不是很懂了,我不是做网站的。
用MFC写了一个ocx控件给js调用,在XP下都没有问题,但是在win7下就有权限的问题了。
我打开IE浏览器如果不是以管理员权限运行的话,则打开页面调用OCX创建一个文件或文件夹的时候会返回错误信息5(拒绝访问),但是用管理员权限运行的时候则没有问题。
当然我们不可能要求用户还要右键选择“以管理员权限运行”来打开IE,也不可能让用户要去设置UAC级别来运行,所以想请教下有谁知道该怎么弄。
网上找了一下资料说是有5种方法,但是我试了下不知道是不是因为设置错误还是咋回事都没能成功。方法如下:
1.在HKCU \Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers注册表分支下添加键值:
名字是程序的全路径,值数据是“RunAsInvoker”
备注:
首先,我的注册表相应目录下没有Layers选项,所以我自行添加了一个;
其次,我是在Layers种新建了一个字符串项,名字:C:\Program Files\Internet Explorer\iexplore.exe
值:RunAsInvoker
最后运行后发现无效,是否设置有啥问题?
2.在程序的manifest文件或者内嵌的manifest信息里加入“level=highestAvaible”或者“level requireAdministrator”安全级别。
备注:
我使用的vs2005,奇怪找资料上说如果是vs2005或vs2008在“属性--连接器--清单文件”里面可以直接设置最高级别的权
限,可是我发现我清单文件里面只有“生成清单、清单文件、附加清单依赖项、允许隔离”这4项,不知道改怎么把UAC权
限写到manifest文件中,当然不能是编译完才去修改manifest文件,否则我下次在编译的时候改文件又会被还原了。
有谁知道该怎么弄,并且试验过能成功的,能否分享下,最好最好是不要弹出让用户选择是否提升权限级别提示,不太友好。一大部分用户会担心病毒木马等等问题。。。
------解决方案--------------------
这种情况应该有另一个进程,由浏览器OCX等通知它来创建文件,文件夹
------解决方案--------------------
执行的时候IE会弹提示的,用户选择了允许就可以了。
另外:你说那个管理员权限 2005我不知道,2008是有的,选上requireAdministrator就会在每次执行之前都弹出一个需要管理员权限才能运行的对话框。
------解决方案--------------------
------解决方案--------------------
这个问题我也在关注,在win7没有权限注册,几乎已经放弃。。打个标签
------解决方案--------------------
------解决方案--------------------
创建一个文件或文件夹的时候会返回错误信息5
(1)你是将文件和文件夹创建在系统目录下么?你可以换个目录,如《我的文档》里面创建,你去提升权限,还不如换个文件夹来的方面(个人意见)。
(2)权限是和进程相关的,你的OCX依赖于IE进程,你是要给IE提权
(3)改进程token开获取管理员权限的进程也需要相关权限的,你的OCX貌似应该修改不了。
(4)用服务应该不错,但是需要考虑进程间的通信问题,上次我也遇到了这样的问题,不过直接创建了个驱动,让它负责创建文件(我的程序本来就需要驱动,所有加个驱动功能无所谓)。
------解决方案--------------------
就下载2次,这里以前也考虑过用公共帐户,但是不是所有帐户都有权限写这个All Users的,所以最后还是根据用户写在不同的位置,一般机器上不会有太多用户的,而且又是后台操作,影响不大。网站方面的知识我就不是很懂了,我不是做网站的。