netmaple 发表于 2016-12-30 21:25:15

替换或删除Syswow64下DLL提示被占用求同学看看那错在那里了(问题已经解决了)

本帖最后由 netmaple 于 2017-1-4 20:56 编辑

问题已经解决了谢谢各位同学
想替换Syswow64下的dll利用DOS下 takeown 给文件赋予了管理权限确还是操作不了,那位同学给个解答,我下面的代码是按照我自己的理解思路去操作的结果失败了

#RequireAdmin

Func _DirAcsece($MoveFile)
        $Attrib = FileGetAttrib($MoveFile)
        If StringInStr($Attrib, "D") Then
                If @OSVersion = "WIN_XP" Then
                        RunWait(@ComSpec & ' /c echo y|Cacls "' & $MoveFile & '" /c /t /p administrators:F', @ScriptDir, @SW_HIDE)
                Else
                        RunWait(@ComSpec & ' /c takeown /f "' & $MoveFile & '" /r /d y && icacls "' & $MoveFile & '" /grant administrators:F /t', @ScriptDir, @SW_HIDE)
                EndIf
        Else
                If @OSVersion = "WIN_XP" Then
                        RunWait(@ComSpec & ' /c echo y|Cacls "' & $MoveFile & '" /c /t /p administrators:F', @ScriptDir, @SW_HIDE)
                Else
                        RunWait(@ComSpec & ' /c takeown /f "' & $MoveFile & '" && icacls "' & $MoveFile & '" /grant administrators:F', @ScriptDir, @SW_HIDE)
                EndIf
        EndIf
EndFunc   ;==>_DirAcsece


_DirAcsece("C:\Windows\Syswow64\sfc_os.dll")
Sleep(500)

RunWait(@ComSpec & ' /c RD /S /Q "' & "C:\Windows\Syswow64\sfc_os.dll" & '.\"', '', @SW_HIDE) ;==>删除测试要是可以删除的话就可以替换

;FileInstall("sfc_os.dll", "C:\Windows\Syswow64\sfc_os.dll", 1);==>替换测试
;下面调试时候确认一下是否成功
If FileExists("C:\Windows\Syswow64\sfc_os.dll") Then
        MsgBox(0, "", "存在")
Else
        MsgBox(0, "", "不存在")
EndIf

q410225 发表于 2016-12-31 11:14:48

先手动操作一次,若不能实现,说明你的理解思路是错的

netmaple 发表于 2017-1-1 11:34:45

我用手动鼠标右键提取了一下权限后可以操作

lxwlxwayy 发表于 2017-1-1 19:38:22

不错,帮你顶

q410225 发表于 2017-1-2 11:50:22

反正你用的都是命令,完全可以在命令提示符下一步步操作,看一下是那步出的问题,
页: [1]
查看完整版本: 替换或删除Syswow64下DLL提示被占用求同学看看那错在那里了(问题已经解决了)