一般Windows下的系统文件(夹)只让受限帐户读取而不让写入和修改。如果要开启写操作权限就需要手动修改文件(夹)的用户帐户安全权限(这操作当然要在管理员帐户下执行).以下用程序封装了一下该操作:

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <AccCtrl.h>
#include <AclAPI.h>int EnableFileAccountPrivilege (PCTSTR pszPath, PCTSTR pszAccount)
{BOOL bSuccess = TRUE;EXPLICIT_ACCESS ea;PACL pNewDacl = NULL;PACL pOldDacl = NULL;do{// 获取文件(夹)安全对象的DACL列表if (ERROR_SUCCESS != GetNamedSecurityInfo ((LPTSTR)pszPath, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, &pOldDacl, NULL, NULL)){bSuccess = FALSE;break;}// 此处不可直接用AddAccessAllowedAce函数,因为已有的DACL长度是固定,必须重新创建一个DACL对象// 生成指定用户帐户的访问控制信息(这里指定赋予全部的访问权限)::BuildExplicitAccessWithName (&ea, (LPTSTR)pszAccount, GENERIC_ALL, GRANT_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT);// 创建新的ACL对象(合并已有的ACL对象和刚生成的用户帐户访问控制信息)if (ERROR_SUCCESS != ::SetEntriesInAcl(1, &ea, pOldDacl, &pNewDacl)){bSuccess = FALSE;break;}// 设置文件(夹)安全对象的DACL列表if (ERROR_SUCCESS != ::SetNamedSecurityInfo ((LPTSTR)pszPath, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, pNewDacl, NULL)){bSuccess = FALSE;}}while(FALSE);if (NULL != pNewDacl){::LocalFree(pNewDacl);}return bSuccess;
}int _tmain(int argc, _TCHAR* argv[])
{// 获取当前登录用户的名称wchar_t strBuffer[256] ={0};DWORD dwSize = 256;GetUserName(strBuffer,&dwSize);const wchar_t z_wszPath[MAX_PATH] = L"H:\\test2";const wchar_t z_wszAccountName[MAX_PATH] = L"Users";if (!EnableFileAccountPrivilege(z_wszPath, z_wszAccountName)){printf("change file account Privilege fail : %s", "H:\\test1");}//int z_Flag = GetFileAttributes(L"H:\\test");//if (!(z_Flag&FILE_ATTRIBUTE_DIRECTORY))//{// return 0;//}////if (z_Flag&FILE_ATTRIBUTE_READONLY)//{// printf("wangjian");//}//SetFileAttributes(L"H:\\test", FILE_ATTRIBUTE_NORMAL);return 0;
}

通用访问权限

安全对象使用Windows 访问掩码格式,四个高位说明通用访问权限。每个安全对象类型映射到这些位到一系列标准和对象特殊访问权限。例如:一个Window文件对象映射GENERIC_READ位到READ_CONTROL和SYNCHRONIZE 标准访问权限和FILE_READ_DATA、FILE_READ_EA和FILE_READ_ATTRIBUTES对象指定访问权限。其他类型对象映射GENERIC_READ位到与类型对象适应的一些访问权限。
  你可以在你打开一个对象句柄的时候使用通用访问权限来指定需要的访问类型;这通常比指定所有对应标准和特指权限要简单。

下表显示了通用访问权限定义的常量。

windows c++ 修改用户的文件夹操作权限相关推荐

  1. Windows10修改用户账户文件夹的名称

    @一贻 这位用户在按照下述方法修改名称后说无法保存东西了,且笔者也没有解决办法,但是笔者在修改名称后是没有出现这种情况的,所以可能是个例,跟自己的电脑或者系统版本等之类的事情有关.如果有知道怎么解决的 ...

  2. linux修改用户中文文件夹为英文

    很多小伙伴在装linux系统时会选择中文语言,这导致用户的文件夹也都变成中文的,有些软件可能不支持中文路径,或是在移动文件时敲中文目录很不方便,所有我们就把用户文件夹改成英文 一.修改配置文件 sud ...

  3. windows删除多余用户及其文件夹

    软硬件环境 windows 10 64bit 前言 windows用户配置文件本质上是一组文件和文件夹,其中存储了所有个人首选项.应用程序设置.文档和其他数据.每个windows用户都有其对应的用户配 ...

  4. Linux用户管理,文件夹权限设置,登录指定目录

    1. 用户设置 #新增用户 useradd username #设置密码 passwd username #连续输两次密码完成用户设置#删除用户 userdel username #删除用户及删除创建 ...

  5. linux赋予文件夹所有权限_Linux文件和文件夹权限操作方法

    Linux 文件权限 首先来查看一下当前目录下的文件内容吧 ls -l    查看当前目录下的文件列表 ls -l xxx.xxx (xxx.xxx是文件名) 查看指定的文件 我们可以看到文件的权限, ...

  6. python打开文件夹的权限_python修改linux中文件(文件夹)的权限属性操作

    今天生成的对流云团路径图片放在linux下,文件的权限都是rw,没有x,后续的别人的程序调用不了,这里附上对三个属性的简单解释,有不够的欢迎大家补充 Linux的权限不是很细致,只有RWX三种 r(R ...

  7. Windows怎么把系统用户中文文件夹改成英文

    Windows怎么把系统用户中文文件夹改成英文 1.用有Administrator权限的账户登录,可以直接开启Administrator账户登录,或者重新注册一个有最高权限的账户,用那个账户登录 2. ...

  8. windows中cmd进入文件夹操作及相对路径

    windows中cmd的文件夹操作 d: #进入d盘根目录 dir #看到d盘中所有的文件夹和选项 cd opencv #进入文件夹之前需要先进入该盘内,之后再输入cd命令 例如: C:\Users\ ...

  9. 改变 Windows 用户默认文件夹位置

    最近对Windows7 系统的默认用户文件夹名称做了改名处理,颇费了些事,最终搞定了. 具体步骤: 1,修改注册表中的默认文件夹名称 进入注册表,定位到计算机\HKEY_LOCAL_MACHINE\S ...

最新文章

  1. WinForm实现Rabbitmq官网6个案例-Topics
  2. HTML5本地图片裁剪并上传
  3. [Unity] Perfab 和 Scene 中显示的物体局部坐标系的原点不是实际原点
  4. 一个程序掌握C++带参构造函数、带有默认参数的构造函数【C++类的经典使用案例】
  5. Cards and Joy CodeForces - 999F (贪心+set)
  6. 20175320 2018-2019-2 《Java程序设计》第6周学习总结
  7. 开源的“谷歌AutoML杀手”来了
  8. DFS(连通块) HDU 1241 Oil Deposits
  9. 服务器异常宕机引发的mysql故障
  10. DSP28335定时器学习
  11. unity3d游戏开发第2版 pdf_从零开始学基于ARKit的Unity3d游戏开发系列1
  12. 论文模型构建的步骤_最全面的财会核心期刊论文写作技巧,核心期刊审稿人带你详解财会论文写作路数...
  13. 网卡的HWADDR和MACADDR的区别?
  14. 第一次去曼谷旅游怎么玩?这份省钱攻略请收好
  15. windows 无法停止ics_Windows10系统不能启动ICS服务致无法连接WiFi热点的三种解决方法...
  16. C#合并Excel单元格
  17. python练习题17
  18. 推荐一个基于 SpringCloud 设计精良的网上商城
  19. 基于EasyNVR摄像机无插件直播方案二次开发实现自己的摄像机IPC-NVR无插件化直播解决方案
  20. Latex第一次写论文记录

热门文章

  1. 学校人员定位管理系统
  2. 速度!天猫双11【自动养猫】教程来啦!领喵币瓜分更多红包!
  3. adb获取当前页面的UI层次布局文件
  4. cad亮度自动变暗_如何修复不会自动变暗的Google Home集线器
  5. 王者荣耀s12赛季服务器维护,王者荣耀7月4日更新内容介绍 S12赛季更新了什么
  6. JavaScript常用的8个数组去重实战源码
  7. Python——with open()的用法
  8. 4PZS240 24V240AH叉车电池组(UK HAWKER)英国霍克 供应商
  9. 前端开发语言基础介绍
  10. cmd命令行查看mysql数据库命令