在Vista操作系统下用管理员权限执行程序时,用GetPrivateProfileString读取ini文件里的值是正常的,而用一般用户执行程序时,用GetPrivateProfileString读取ini文件里的值是不正常的,也不知道读取出来的值是从哪里来的!
请高手帮忙!

解决方案 »

  1.   

    楼主的ini文件放在了什么地方?如果是windows,windows\system32等这样的系统保留目录下那么就会被vista的一种叫做"虚拟化"的技术给忽悠了.所谓虚拟化就是MS为了保证自身的安全性和第三放程序的兼容性而设定的这么一种过渡技术,简单来将就是系统重要目录下的文件对于每个进程来讲都有其单独的一份copy,假如进程A,B都要访问系统目录里的一个文件C,那么它们两个访问(包括)的将会是不同的C.建议楼主还是把ini文件搬家放置到当前用户或者是All User目录里吧,它们均是vista规定的合法的位置.
      

  2.   

    再补充一下,以Administrator权限启动程序可以不受虚拟化技术的影响,但是这样会给用户启动你的程序带来操作上的烦琐,并且MS也强烈建议大家都把自己的文件放到合法的目录里去,我想我们还是遵守的好~~
      

  3.   

    感谢rfa(实况狐狸) 的回答,我的ini文件放在program files下某个文件夹下,这个位置是否也受MS所谓“虚拟化”技术的影响?谢谢