最近在学习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++语言写的
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++语言写的
除非你让用户关闭IE的保护模式,当然这种要求对于用户来说是很霸道的。
必须改变软件的编写思路。因为对于BHO来说,没有任何必要在Program Files里创建文件。
如果你想创建安装程序,可以让BHO来下载另外的.exe安装程序。
或者直接安装到AppData\Local目录下,非管理员权限是可以读写这里的。
保护模式下的IE处于Low模式,只要是写入权限在Medium以上的目录,都是无法写入的。