找回密码
 加入
搜索
查看: 4702|回复: 9

[AU3基础] 测试了P版的修改服务权限,64位系统下修改后,再修改不回来,测试失误(已解决)

  [复制链接]
发表于 2011-11-6 21:55:19 | 显示全部楼层 |阅读模式
本帖最后由 txm888 于 2011-11-7 23:49 编辑

最近测试了下P版的修改服务权限,在64位系统下修改后,再修改不回来了,麻烦懂的请看一下,谢谢
#include <Array.au3>
#include <LocalSecurityAuthority.au3>

$sService = "Au3MemCleaner"     ; 服务名称。
$aAceList = _QueryServiceObjectSecurityDacl($sService)        ; 直接返回包含权限信息的数组(不返回访问控制列表(ACL)指针)。


$aSecur = _GetNamedSecurityInfo($sService, $SE_SERVICE, 4)
$pACL = $aSecur[6]
$pSecurDesc = $aSecur[8]
; $pACL = _GetSecurityDescriptorDacl($pSecurDesc)

$aAceList = _GetExplicitEntriesFromAcl($pACL)
_Arraydisplay($aAceList, $sService & "服务访问权限")


$sUserName = "Everyone"
$iAccessMask = bitOR($READ_CONTROL, $WRITE_DAC)
$iAccessMode = $GRANT_ACCESS
$iInheritance = $NO_INHERITANCE
$pOrigAcl = 0


Dim $aAccess[1][4] = [[$sUserName, $iAccessMask, $iAccessMode, $iInheritance]]
$pNewAcl = _SetEntriesInAcl($aAccess, $pOrigAcl)
; $pNewAcl中,只允许当前用户读取和设置$sService 服务的安全信息。
; 要允许$sUserName用户有其他的权限,请自行修改$iAccessMask的值,以下网址中包含各权限所对应的值。
; 注意$iAccessMask一定要包含READ_CONTROL 和WRITE_DAC。
; http://msdn.microsoft.com/en-us/library/ms685981(VS.85).aspx

$aNewAceList = _GetExplicitEntriesFromAcl($pNewAcl)
_Arraydisplay($aNewAceList, $sService & "服务访问权限")


$iResult = _SetNamedSecurityInfo($sService, $SE_SERVICE, $DACL_SECURITY_INFORMATION, 0, 0, $pNewAcl, 0)
If $iResult = True Then
        ShellExecute("Services.msc")
        Msgbox(0, '', "成功,请测试" & $sService & "服务是否能够访问,不能访问则设置权限成功。")
Else
        Msgbox(0, "", "失败,错误码:" & @ERROR)
EndIf

; 设置回其原来的权限。
$iResult = _SetNamedSecurityInfo($sService, $SE_SERVICE, $DACL_SECURITY_INFORMATION, 0, 0, $pAcl, 0)
If $iResult = True Then
        Msgbox(0, '', "成功,请测试" & $sService & "服务是否能够访问,能访问则设置权限成功。")
Else
        Msgbox(0, "", "失败,错误码:" & @ERROR)
EndIf
而且权限值里已经包含READ_CONTROL(读取安全信息) 和WRITE_DAC(设置安全息),指定的$sUserName用户应该有重新设置回其原来的安全信息的权限啊~~~

测试环境为win R2 2008 64位

注意,注册的服务是通过这程序自身注册的!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-11-6 22:25:36 | 显示全部楼层
这个只能等P版来咯!要不就重装系统咯
发表于 2011-11-6 22:29:07 | 显示全部楼层
代码第40、48行显示的错误码是多少?
 楼主| 发表于 2011-11-6 23:36:45 | 显示全部楼层
回复 3# pusofalse


   经再次测试,两次都是提示成功的,看服务。也的确修改过来了,究竟问题出在哪里?难道是我自己没存在问题?不好意思,我再测试下,谢谢P版,感谢您大驾光临
 楼主| 发表于 2011-11-6 23:55:41 | 显示全部楼层
回复 2# hzxymkb


    呵呵,P版已回,要测试个结果出来后,再恢复系统 ,谢谢谢谢
 楼主| 发表于 2011-11-7 23:49:16 | 显示全部楼层
回复 3# pusofalse


    P版,不好意思,经我再次测试,的确是我自己的失误,我代码有误,现已纠正,测试正常,谢谢您了,
发表于 2011-11-13 22:32:04 | 显示全部楼层
发表于 2012-2-20 14:47:59 | 显示全部楼层
来学过了,表示下谢意
发表于 2013-4-18 09:31:23 | 显示全部楼层
正确的代码放出束撒
发表于 2014-1-20 14:19:02 | 显示全部楼层
p版帖子现在还无权查看,在你这儿得到了,谢谢楼主了,学习中。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-28 15:21 , Processed in 0.098805 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表