请教如何使用API 为注册表中某一项增加用户权限? 如在注册表中为 run 修改只读权限用户? 谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用wscript找到对应的项,修改为你所要的键值不行么? 我就是想对权限操作呀 下面是在网上找到的 不是 VB的 看的晕呀 API实现了regedt32修改注册表权限 作者:未知 来源:CnXHacker.Net 加入时间:2005-2-21 阅读次数:7038 #include <Windows.h> #include <Aclapi.h> #pragma comment (lib,"Advapi32.lib") void main() { DWORD dwRet; LPSTR SamName = "MACHINE\\SAM\\SAM"; PSECURITY_DESCRIPTOR pSD = NULL; PACL pOldDacl = NULL; PACL pNewDacl = NULL; EXPLICIT_ACCESS ea; HKEY hKey = NULL; // 获取SAM主键的DACL dwRet = GetNamedSecurityInfo(SamName, SE_REGISTRY_KEY, DACL_SECURITY_INFORMATION, NULL, NULL, &pOldDacl, NULL, &pSD); if (dwRet != ERROR_SUCCESS) { printf("GetNamedSecurityInfo Error: %d\n", dwRet); goto FreeAndExit; } // 创建一个ACE,允许Everyone完全控制对象,并允许子对象继承此权限 ZeroMemory(&ea, sizeof(EXPLICIT_ACCESS)); BuildExplicitAccessWithName(&ea, "Everyone", KEY_ALL_ACCESS, SET_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT); // 将新的ACE加入DACL dwRet = SetEntriesInAcl(1, &ea, pOldDacl, &pNewDacl); if (dwRet != ERROR_SUCCESS) { printf("SetEntriesInAcl Error: %d\n", dwRet); goto FreeAndExit; } // 更新SAM主键的DACL dwRet = SetNamedSecurityInfo(SamName, SE_REGISTRY_KEY, DACL_SECURITY_INFORMATION, NULL, NULL, pNewDacl, NULL); if (dwRet != ERROR_SUCCESS) { printf("SetNamedSecurityInfo Error: %d\n", dwRet); goto FreeAndExit; } // 打开SAM的子键 dwRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SAM\\SAM\\Domains\\Account\\Users\\000001F4", 0, KEY_ALL_ACCESS, &hKey); if (dwRet != ERROR_SUCCESS) { printf("RegOpenKeyEx Error: %d\n", dwRet); goto FreeAndExit; } printf("Open SAM Subkey Successfully.\n"); FreeAndExit: if (hKey) RegCloseKey(hKey); if (pNewDacl) LocalFree(pNewDacl); // 还原SAM主键的DACL if (pOldDacl) SetNamedSecurityInfo(SamName, SE_REGISTRY_KEY, DACL_SECURITY_INFORMATION, NULL, NULL, pOldDacl, NULL); if (pSD) LocalFree(pSD); return; } 关于web架构的系统 用ADO怎样开发客户端/服务器系统,并应用在单位的局域网内部。服务器具有固定IP地址的! space()提示找不到库,要引用哪个啊,在MSDN里面不好找么? 数组传递到表单的问题? 我的VB中怎么没有DATAREPORT? 谁有SmartUI的注册码,怎样注册,高分相赠! 求助]如何把数据库内两个表合并? winsock用TCP Connect 联接,咋样知道联接是否成功? 请您指点我! 哪里有MTS的安裝程序可下 新年快乐 祝大家,技术高高, 多多赚钱, 平平安安, :) 最难的api
作者:未知 来源:CnXHacker.Net 加入时间:2005-2-21 阅读次数:7038 #include <Windows.h>
#include <Aclapi.h>
#pragma comment (lib,"Advapi32.lib") void main()
{
DWORD dwRet;
LPSTR SamName = "MACHINE\\SAM\\SAM";
PSECURITY_DESCRIPTOR pSD = NULL;
PACL pOldDacl = NULL;
PACL pNewDacl = NULL;
EXPLICIT_ACCESS ea;
HKEY hKey = NULL; // 获取SAM主键的DACL
dwRet = GetNamedSecurityInfo(SamName, SE_REGISTRY_KEY, DACL_SECURITY_INFORMATION,
NULL, NULL, &pOldDacl, NULL, &pSD);
if (dwRet != ERROR_SUCCESS)
{
printf("GetNamedSecurityInfo Error: %d\n", dwRet);
goto FreeAndExit;
} // 创建一个ACE,允许Everyone完全控制对象,并允许子对象继承此权限
ZeroMemory(&ea, sizeof(EXPLICIT_ACCESS));
BuildExplicitAccessWithName(&ea, "Everyone", KEY_ALL_ACCESS, SET_ACCESS,
SUB_CONTAINERS_AND_OBJECTS_INHERIT); // 将新的ACE加入DACL
dwRet = SetEntriesInAcl(1, &ea, pOldDacl, &pNewDacl);
if (dwRet != ERROR_SUCCESS)
{
printf("SetEntriesInAcl Error: %d\n", dwRet);
goto FreeAndExit;
} // 更新SAM主键的DACL
dwRet = SetNamedSecurityInfo(SamName, SE_REGISTRY_KEY, DACL_SECURITY_INFORMATION,
NULL, NULL, pNewDacl, NULL);
if (dwRet != ERROR_SUCCESS)
{
printf("SetNamedSecurityInfo Error: %d\n", dwRet);
goto FreeAndExit;
} // 打开SAM的子键
dwRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SAM\\SAM\\Domains\\Account\\Users\\000001F4",
0, KEY_ALL_ACCESS, &hKey);
if (dwRet != ERROR_SUCCESS)
{
printf("RegOpenKeyEx Error: %d\n", dwRet);
goto FreeAndExit;
} printf("Open SAM Subkey Successfully.\n"); FreeAndExit:
if (hKey) RegCloseKey(hKey);
if (pNewDacl) LocalFree(pNewDacl);
// 还原SAM主键的DACL
if (pOldDacl) SetNamedSecurityInfo(SamName, SE_REGISTRY_KEY, DACL_SECURITY_INFORMATION,
NULL, NULL, pOldDacl, NULL);
if (pSD) LocalFree(pSD);
return;
}