最近在学习BHO,在win xp系统下能正常运行,但是在win7下使用IE加载BHO时,BHO对本地文件(C:\program files目录和e:\test目录下)进行操作时,报错,使用GetLastError获得错误代码是5:拒绝访问,为了确定不是UAC的关系导致,我又写了一个exe,直接对(C:\program files目录和e:\test目录)进行相同的操作(对本地文件进行操作),结果是:
     A、不使用管理员权限运行exe时,操作C:\program files目录下的文件时,会被重定向到C:\Users\(当前用户名)\AppData\Local\VirtualStore\Program Files目录,但是不影响exe对c:\program files目录下文件的操作;
     B、不使用管理员身份运行exe时,操作e:\test目录下的文件,是可以成功的;
上面的实验在XP下是完全没问题的,而WIN7则不然,通过上面的实验,是不是可以说是IE限制了BHO的权限,如果是这样的话,那又该如何开启这个权限呢,不是提升到管理员的权限,仅仅是操作本地文件的权限?
     以上的操作都是使用C++语言写的

解决方案 »

  1.   

    IE的保护模式开启时,不仅无法提升到管理员权限,而且很多危险操作都被限制。
    除非你让用户关闭IE的保护模式,当然这种要求对于用户来说是很霸道的。
    必须改变软件的编写思路。因为对于BHO来说,没有任何必要在Program Files里创建文件。
    如果你想创建安装程序,可以让BHO来下载另外的.exe安装程序。
    或者直接安装到AppData\Local目录下,非管理员权限是可以读写这里的。
      

  2.   

    我想知道你问什么要BHO进行本地文件访问呢?
      

  3.   

    看看这个:http://blog.csdn.net/superes/article/details/1532322
    保护模式下的IE处于Low模式,只要是写入权限在Medium以上的目录,都是无法写入的。