C/C++语言, 调用Windows API更改文件、文件夹或注册表权限的所有者

所用到的函数

  1. GetUserName                 //获取当前登陆用户名
  2. LookupAccountName     //获取用户名SID
  3. SetNamedSecurityInfo    //ACL相关函数

#include <stdio.h>
#include <aclapi.h>
#include <windows.h>/*如执行失败,请检察程序权限可用管理员执行,加入提升进程权限代码等文件和文件夹必须在NTFS格式的磁盘下,FAT32是没有权限之说的Win7上测试通过
*/int main(void)
{CHAR UserName[36] = {0};CHAR *Path = "H:\\temp";//要更改的文件或文件夹路径// HKEY_CURRENT_USER\tmp 注册表需要去掉前边的HKEY_//CHAR *Path = "CURRENT_USER\\tmp";// LookupAccountName函数所需要的变量DWORD cbUserName = sizeof(UserName);CHAR Sid[1024] = {0};DWORD cbSid = sizeof(Sid);CHAR DomainBuffer[128] = {0};DWORD cbDomainBuffer = sizeof(DomainBuffer);SID_NAME_USE eUse;//获取当前登陆用户名GetUserName(UserName,&cbUserName);//当然也可以自己指定用户名,必须得系统已有的用户名//获取用户名SIDif (LookupAccountName(NULL,UserName,&Sid,&cbSid,DomainBuffer,&cbDomainBuffer,&eUse)){// 更改所有者if (!SetNamedSecurityInfo(Path,SE_FILE_OBJECT, /* 注册表为:SE_REGISTRY_KEY */OWNER_SECURITY_INFORMATION, /* 更改所有者 */&Sid, /* 需要更改所有者的SID */NULL,NULL,NULL)){printf("成功更改所有者\n");}}return 0;
}

程序执行前截图

更改前,所有者为:Administrators

成功执行程序后

成功执行程序后,所有者为当前用户名

C/C++语言 Windows API更改文件、文件夹或注册表权限的所有者相关推荐

  1. PowerShell基础教程(10)——处理文件、文件夹和注册表项

    PowerShell基础教程(10)--处理文件.文件夹和注册表项 <o:p></o:p> Windows PowerShell 使用名词项来表示在 Windows Power ...

  2. 更改文件类型图标logo_如何在Windows中更改特定文件类型的图标

    更改文件类型图标logo In the Windows XP days, changing the icon for a specific file type-such as TXT or PNG-w ...

  3. c语言windows api编程,windows API编程学习

    我并不是计算机专业的学生,从事的工作也和编程没啥关系,并且是工作了五六年后开始在业余时间学习windows编程的,这种背景下开始学编程确实比较痛苦. 买了Charles Petzold 的<wi ...

  4. C 怎么处理windows路径_在Windows中使用msix打包工具监视注册表和文件

    以下内容不涉及任何专业知识,所有人都可以看懂. 此方法只适用于Windows10及更高版本 1.目的 有时候,我们需要找到知道某一时间段内某个应用程序对系统做了哪些修改,例如: 1.1.Windows ...

  5. Windows 定位某文件位置并选择文件、定位某个注册表项位置

    点个赞留个关注吧!! 一.定位某个文件的位置并选中文件 在cmd或运行框里运行即可 explorer.exe /select,C:\Windows\System32\ApplicationFrameH ...

  6. win10 此电脑显示多余的文件夹通过注册表去除

    win10 的此电脑,就是win7的计算机位置多了6个文件夹出来,说实话这个很不友好,因为如果文件夹没有全屏那么下面的磁盘会被遮挡住,让人很有些不爽.其实右边还好一些,可以点击收起将文件夹部分收起来, ...

  7. java 注册表 修改_[Java] jar文件运行(修改注册表修)

    一.jar文件运行有两种方法: 1. 用dows命令javaw -jar xxx.jar 但是这种不太方便经常使用 2. 注册表项的路径为: 1)win+R键,打开"运行" 2)输 ...

  8. 怎么更改锁定计算机背景图片,Win7系统怎么更改锁屏壁纸?注册表如何修改锁屏壁纸?...

    Win7系统怎么更改锁屏壁纸?很多第三方软件都可以做到,但我们该如何手动设置锁屏壁纸呢?本文将配合使用注册表修改Win7系统的锁屏壁纸的步骤进行一个详细的讲解,具体步骤请看下文. Win7系统更改锁屏 ...

  9. 渗透知识- Windows系统目录、服务、端口、注册表

    1.系统目录 Windows:是Windows系统安装文件所在文件夹,一般用来存储系统安装文件和硬件驱动程序等内容,是系统正常运转的必要保证. Program Files:指的是程序文件,是Windo ...

最新文章

  1. springboot 成员变量_springboot系列之04-提高开发效率必备工具lombok
  2. POJ2594 最小路径覆盖
  3. HDU - 6016 Count the Sheep(二分图+思维)
  4. 学习资料(不定更新)
  5. 2018-2019-2 网络对抗技术 20165303 Exp4 恶意代码分析
  6. Conditional project or library reference in Visual Studio
  7. M1兼容性怎么样?关于M1版MacBook兼容软件的测试方法
  8. google now
  9. Android中的savedInstanceState
  10. fast.ai 深度学习笔记:第一部分第二课
  11. 设置背景图片的两种方式,并解决手机端背景图片高度自适应问题
  12. visual studio 代码分析利器 FxCop
  13. L2-029 特立独行的幸福 (25 分)-PAT 团体程序设计天梯赛 GPLT
  14. visual studio 高级选项及配置
  15. Rust : actor模式 与 Actix库
  16. impress.js学习总结
  17. 3万行代码硬撸一个一键发布文章工具,简直不要太好用,从此写文章,发文章,太简单了好伐
  18. IDC网络传输优化的罪与罚
  19. 系统总裁SC系统封装WIN7
  20. 2022年12月招聘、内推最新职位

热门文章

  1. 变量、字符串与数字类型
  2. 手机语音转文字如何实现?一个工具,两种方法教你语音转文字
  3. 每天十道面试题(六)
  4. 如何快速制作出美观的中国式报表【SuccBI篇】
  5. javascript获取系统时间时区_javascript怎么获取显示系统时间?
  6. 有了emui为啥要鸿蒙,EMUI11系统有什么功能 EMUI11系统与鸿蒙的关系是什么
  7. python考试编程题九道
  8. maya单位、网格线设置
  9. socketpair
  10. 网络安全防护需要做到哪些方面?