王老师:
您在我今天的另外一个帖子里的回答:“在管理员帐号下RegCreateKeyEx,其中lpSecurityAttributes参数不要给NULL,要给出一个安全描述符,如果要让所有用户访问,可以添加Everyone帐号的访问权限。” 我刚刚测试的时候发现,这种方法好像没有把Guests组里的用户包括进去。其它的标准用户都可以正常修改管理员创建的注册表项,但是Windows自带的默认的Guest用户则无法以写权限打开管理员创建的注册表项。 请问这个有办法解决吗?
您在我今天的另外一个帖子里的回答:“在管理员帐号下RegCreateKeyEx,其中lpSecurityAttributes参数不要给NULL,要给出一个安全描述符,如果要让所有用户访问,可以添加Everyone帐号的访问权限。” 我刚刚测试的时候发现,这种方法好像没有把Guests组里的用户包括进去。其它的标准用户都可以正常修改管理员创建的注册表项,但是Windows自带的默认的Guest用户则无法以写权限打开管理员创建的注册表项。 请问这个有办法解决吗?
解决方案 »
- 关于对话框的关闭
- 为什么程序多次读取一个位图后就不能再次读取了
- [DB][Access]在Create Table中如何设置 输入法模式和IME 语句模式
- m_Connection.CreateInstance(__uuidof(Connection)) 创建不出来
- 运行CMSComm::GetInput()时内存使用递增,如何解决?
- 如何将另一个线程里获得的数据显示在界面中的列表控件中??
- win2000下OpenThread失败了!
- GetObjectContext 没有输入参数,它是如何知道返回哪个的Context呢?
- 急!怎么样才能让M$ Mpeg4压缩驱动,按照YUY2格式解压
- 急救:怪错
- [救命]大哥谁好心给个IMGOCXD.HLP给我,我的邮箱是[email protected]
- error LNK2001: unresolved external symbol 的问题
DWORD aclLength = 0x400;
DWORD sid1Length = 0x400;
DWORD sid2Length = 0x400;
DWORD domain1Length = 0x400;
DWORD domain2Length = 0x400;
PACL acl = (PACL)new BYTE[aclLength];
PSID sid1 = (PSID)new BYTE[sid1Length];
PSID sid2 = (PSID)new BYTE[sid2Length];
LPTSTR domain1 = new TCHAR[domain1Length];
LPTSTR domain2 = new TCHAR[domain2Length];
SID_NAME_USE snu;
SECURITY_DESCRIPTOR sd;
SECURITY_ATTRIBUTES sa; InitializeAcl(acl, 0x400, ACL_REVISION);
LookupAccountName(NULL, _T("Everyone"), sid1, &sid1Length, domain1, &domain1Length, &snu);
AddAccessAllowedAce(acl, ACL_REVISION, GENERIC_ALL, sid1);
LookupAccountName(NULL, _T("Guests"), sid2, &sid2Length, domain2, &domain2Length, &snu);
AddAccessAllowedAce(acl, ACL_REVISION, GENERIC_ALL, sid2);
InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(&sd, TRUE, acl, FALSE);
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = &sd;
sa.bInheritHandle = FALSE;
HKEY key;
// RegCreateKeyEx
delete domain1;
delete domain2;
delete sid1;
delete sid2;
delete acl;