请教advapi32.dll中,RegSetKeySecurity的用法。(已解决)
本帖最后由 nmgwddj 于 2011-9-7 11:56 编辑参数 类型及说明
hKey Long,指定一个项的句柄,或指定一个标准项名
SecurityInformation Long,对要保存的信息进行描述的标志
pSecurityDescriptor SECURITY_DESCRIPTOR,这个结构包含了注册表项新的安全特性设置
其中“对要保存的信息进行描述的标志”和“这个结构包含了注册表项新的安全特性设置” 的值 该如何设置?
给个例子即可,不能这里坐等代码,我可以自己研究研究。在网络上搜索了一下,都是一些关于vb的例子。看不太明白。
再此感谢! 在P版那里看到了
http://www.autoitx.com/forum.php?mod=viewthread&tid=6635&highlight=%D7%A2%B2%E1%B1%ED
Func _RegSetKeySecurity($hKey, $iLevel, $pSecurDesc)
Local $iResult
$iResult = DllCall("advapi32.dll", "long", "RegSetKeySecurity", _
"hWnd", $hKey, "int", $iLevel, "ptr", $pSecurDesc)
Return SetError($iResult, 0, $iResult = 0)
但是不清楚$iLevel和 $pSecurDesc参数该如何设置,希望指点。 #include <lsasecur.au3>
Local Const $KEY_ALL_ACCESS = 0xF003F
; 注册表键的完整路径。
Local $sRegKey = "HKLM\Software\test"
; 获取现有的 安全描述符,安全描述符中包含 访问控制列表,由SE_INFO_DACL指定。
Local $pOldSecur = _SeGetRegKeySecurity($sRegKey, $SE_INFO_DACL)
; 获取 安全描述符中的 访问控制列表。
Local $pOldDacl = _SeGetSecurityDescriptorDacl($pOldSecur)
; 初始化 新的安全描述符。
Local $pSecur = _SeInitSecurityDescriptor()
; 获取 授权者SID。
Local $pTrustee = _SeLookupAccountName("Everyone")
; 创建 新的访问控制列表。
Local $pDacl = _SeSetEntriesInAcl1( _
$pTrustee, _ ; 授权者SID。
$KEY_ALL_ACCESS, _ ; 完全控制。
$SE_GRANT_ACCESS, _ ; 允许访问。
$SE_INHERIT_KEY_SUBKEY, _ ; 权限继承到 该键及所有子键。
$pOldDacl) ; 原有的 访问控制列表。
; 设置 安全描述符中的 访问控制列表。
_SeSetSecurityDescriptorDacl($pSecur, $pDacl)
Local $fStatus = _SeSetRegKeySecurity( _
$sRegKey, _ ; 注册表键的路径。
$SE_INFO_DACL, _ ; 要设置的安全信息类型。
$pSecur) ; 包含DACL的 安全描述符。
MsgBox(0, $fStatus, _SeFormatMsg())
; 释放内存,必须。
_SeLocalFree($pDacl)
_SeHeapFree($pTrustee)
_SeHeapFree($pSecur)
_SeHeapFree($pOldSecur)
这段代码将在原有的权限基础上,添加Everyone用户并允许其 对指定注册表键的所有访问。如果要替换原有权限,将_SeSetEntriesInAcl1函数的第5个参数 $pOldDacl 改为 $SE_NULL_DACL 即可。
_SeSetEntriesInAcl1 的第2个参数$KEY_ALL_ACCESS为完全控制,更多合法的取值参考 Registry Key Security and Access Rights 回复 3# pusofalse
非常感谢,问题解决。 回复 3# pusofalse
请问下,这个如果要替换子健权限是必须遍历还是本身支持? 这个udf的功能很强大 {:face (327):} {:face (125):}超级版主 果然出手不凡啊 去试试 好像不能继承权限子项 本帖最后由 qq82015930 于 2012-9-24 00:33 编辑
回复 3# pusofalse
Pusofalse版主 请教要改为只读应该怎么改?
虽然那英文翻译拉还是没看懂,不过用愚蠢的办法个个的试找到答案拉,谢谢{:face (270):} 回复 3# pusofalse
How do I deny access to everybody
页:
[1]