最近一个软件的功能需要写INI配置文件,放在其它盘没有事,但是如果用户安装在系统盘的Program File文件夹下面时,写配置文件就会出现问题,一开始的时候经理就说了,WIN 7下有用户帐户控制权限问题,写INI文件不好,要我选别的,或者写注册表之类的,我试了下,果断的没写进去,INI配置文件出不来,后来到网上找了个给程序赋予管理员权限的方法,也就是程序的图标那里出现个小盾牌,然后想着,先试试吧,翻了下文档,如果是VS2008或者VS2010的开发环境就简单点,直接在清单工具那点UAC执行级别,然后选管理员权限就行,可惜我的是VS2005的,没有这个UAC选项,哎,手动呗,反正也比较简单,第一步,在程序目录添加如下APPNAME.manifest文件:


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0"
     processorArchitecture="X86"
     name="IsUserAdmin"
     type="win32"/>
  <description>Description of your application</description>
  <!-- Identify the application security requirements. -->
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
        </requestedPrivileges>
       </security>
  </trustInfo>
</assembly>

这个代码的出处在微软MSDN网页上有,附:http://msdn.microsoft.com/en-us/library/windows/desktop/bb756929.aspx

然后第二步,在VS2005中的清单工具,输入和输出的附加选项中,写上你的APPNAME.manifest的文件名,这样然后编译之后,你的程序放在系统目录下,就可以拥有管理员权限了。

   可惜的是,每次运行这程序都会弹出权限赋予,这客户来说,可定是不行的了,还不被人家骂死,看来赋予权限是搞不定了,有没有人可以把这弹出框搞定的,有搞定的朋友麻烦告诉下啊,多谢了,也看到过有人写出一帖子,但是没写完,就不知道如何操作.

  既然软件在Program File目录时写文件是搞不定了,所以找了个办法,只有和大家一样写到AppData下面去了,算是先临时搞定吧,等以后可以解决弹出框时,在写到当前目录。

  在VC中获取AppData的目录路径可以用SHGetSpecialFolderPath这个函数,参数嘛,嘿嘿,当然是自己去找了,            算了,还是不浪费大家时间了,^*^.

附上:SHGetSpecialFolderPath(this->GetSafeHwnd(),buffPath,CSIDL_APPDATA,FALSE);

OK,一个小小的问题,没有解决,但还是记一记吧,和大家一起学习。