麻烦把这个c代码转换为易语言,案例是设置文件夹,需求是设置注册表权限。 主要是把这两个api函数的参数搞出来就行。LookupAccountName,SetNamedSecurityInfo。 或者写一个这两个参数的案例。需要一个demo,也有参数,奈何不会写。
源代码地址:https://blog.csdn.net/duke56/article/details/103302837 C/C++语言, 调用Windows API更改文件、文件夹或注册表权限的所有者 所用到的函数 - GetUserName //获取当前登陆用户名
- LookupAccountName //获取用户名SID
- 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);
//当然也可以自己指定用户名,必须得系统已有的用户名
//获取用户名SID
if (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
- };
}
|