Yesky首页| 产品报价| 行情| 手机 | 数码 | 笔记本 | 台式机 | DIY硬件 | 外设 | 网络 | 数字家庭 | 评测 | 软件 | e时代 | 游戏 | 图片 | 壁纸 | 群乐 | 社区 | 博客 | 下载
您现在的位置: 天极网 > Win32程序设计之系统安全
全文

Win32程序设计之系统安全

2001-05-28 12:09 作者: QQ新人类编译 出处: yesky 责任编辑:方舟

  另一个例子

  同样的安全描述器代码可以应用到其它受保护的NT对象上,因为安全系统对于所有的对象都是一样的。例如,你可以使用它来创建注册表中的一个键值,具体见下面的代码。如果你将下面的代码和上面的作对比,你将会发现它们几乎是完全一样了,除了这里是用RegCreateKeyEx来创建一个注册表键而不是一个文件。



#include
#include

SECURITY_ATTRIBUTES sa;
SECURITY_DESCRIPTOR sd;
BYTE aclBuffer[1024];
PACL pacl=(PACL)&aclBuffer;
BYTE sidBuffer[100];
PSID psid=(PSID) &sidBuffer;
DWORD sidBufferSize = 100;
char domainBuffer[80];
DWORD domainBufferSize = 80;
SID_NAME_USE snu;
LONG result;
HKEY regKey;
DWORD disposition;

void main(void)
{
InitializeSecurityDescriptor(&sd,
SECURITY_DESCRIPTOR_REVISION);
InitializeAcl(pacl, 1024, ACL_REVISION);
LookupAccountName(0, "guest", psid,
&sidBufferSize, domainBuffer,
&domainBufferSize, &snu);
AddAccessAllowedAce(pacl, ACL_REVISION,
GENERIC_READ, psid);
SetSecurityDescriptorDacl(&sd, TRUE, pacl,
FALSE);

sa.nLength= sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = FALSE;
sa.lpSecurityDescriptor = &sd;

result = RegCreateKeyEx(HKEY_CURRENT_USER,
"junk", 0, 0, REG_OPTION_VOLATILE,
KEY_ALL_ACCESS, &sa, ®Key,
&disposition);
cout << result << endl;
RegCloseKey(regKey);
}


  在运行以上代码前,先运行注册表编辑器(regedit32.exe),查看HKEY_CURRENT_USER,并且确认在HKEY_CURRENT_USER下并没有一个名字为“junk”的键值。如果有的话,请删除它,或者修改代码来创建一个不同的键。

  现在可运行代码,如果没有设置为自动刷新的话,刷新注册表编辑器的显示,你将会看到一个名字为“junk”的新键。通过安全菜单中的权限选项,查看它的权限,你将会发现该键的拥有者是你或者是管理员,而“guest”是唯一可以访问它的用户。你可以改变键的名字或者是用户,再继续尝试一下,由于以上的代码创建的是一个volatile键,因此该键将在你注销或者重启系统的时候消失。


共4页。 9 1 2 3 4
文章阅读排行
周排行
月排行
欢迎订阅天极网RSS聚合资讯:http://www.yesky.com/index.xml