txm888 发表于 2011-11-6 21:55:19

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

本帖最后由 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
$pSecurDesc = $aSecur
; $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 = [[$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位

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

hzxymkb 发表于 2011-11-6 22:25:36

这个只能等P版来咯!要不就重装系统咯

pusofalse 发表于 2011-11-6 22:29:07

代码第40、48行显示的错误码是多少?

txm888 发表于 2011-11-6 23:36:45

回复 3# pusofalse


   经再次测试,两次都是提示成功的,看服务。也的确修改过来了,究竟问题出在哪里?难道是我自己没存在问题?不好意思,我再测试下,谢谢P版,感谢您大驾光临

txm888 发表于 2011-11-6 23:55:41

回复 2# hzxymkb


    呵呵,P版已回,要测试个结果出来后,再恢复系统 ,谢谢谢谢

txm888 发表于 2011-11-7 23:49:16

回复 3# pusofalse


    P版,不好意思,经我再次测试,的确是我自己的失误,我代码有误,现已纠正,测试正常,谢谢您了,

江甫杞令 发表于 2011-11-13 22:32:04

打酱油的,混点分数提高下等级,谁然我是路过,但是也不是水帖子
Dragon Nest Gold,vindictus gold,swg credits,silkroad gold,NosTale Gold,Knight Noah,Eden Eternal gold, Elsword ED,tibia gold,shaiya gold,rs2 gold,rohan gold,RIFT Platinum,RIFT Plat,RIFT Gold,rappelz gold,rappelz rupees,perfect world gold,pw gold,Metin2 Yang,Metin2 Gold,maplestory mesos,mabinogi gold,lineage 2 adena,guild wars gold,ffxiv gil,ffxi gil,2moons dil, 4story money, 4story Luna, 4Story Gold, 9Dragons gold, Aion Kinah, Buy Aion Kinah, Buy Aion Gold, apb gold, Cabal Alz, Cabal Gold, dfo gold, dofus kamas, EVE ISK, eq2 plat,

qdcycm 发表于 2012-2-20 14:47:59

来学过了,表示下谢意

jasonyan97 发表于 2013-4-18 09:31:23

正确的代码放出束撒

fybhwsx 发表于 2014-1-20 14:19:02

p版帖子现在还无权查看,在你这儿得到了,谢谢楼主了,学习中。。。
页: [1]
查看完整版本: 测试了P版的修改服务权限,64位系统下修改后,再修改不回来,测试失误(已解决)