none
使用api修改注册表权限的问题 RRS feed

  • 常规讨论

  • 问题:有某一个位于HKLM下面的key,它对应admin的权限只有read,而且这个key的owner不是administrators,现在需要用api来把owner修改为admin并且给admin赋予最高权限。

    由于这个问题的手动解决方式为打开健,并且在高级选项里面修改owner,之后再赋予administrator最高权限就能解决,因此我想到用api的解决方案如下:

    首先用regopenkeyex拿到这个key,当然由于权限只能为read,所以安全标识只能写key_read
    之后创建新的acl并且绑定到新的security descriptor上
    最后用regsetkeysecurity来设置这个key的新属性
    最后用管理员模式运行整个程序

    但是无论如何做,最后一步都会返回access deny,除非这个key有写权限,并且拿到key的时候,安全标识为write……
    这样就掉进一个怪圈里面了,需要修改权限的前提是有这个权限……但是手动是可以解决这个问题的,难道是我什么地方用错了Api或者整个思路都不对么?

    求高人解答~
    2010年10月9日 1:39