WIN 7中开户UAC时在Program File保护目录下进行写文件
最近一个软件的功能需要写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,一个小小的问题,没有解决,但还是记一记吧,和大家一起学习。
转载于:https://blog.51cto.com/thgenius/1343529