找回密码
 加入
搜索
查看: 3582|回复: 4

[AU3基础] PendingFileRenameOperations键值应该怎么改?(已解决)

[复制链接]
发表于 2011-1-13 17:14:01 | 显示全部楼层 |阅读模式
本帖最后由 dearmb 于 2011-1-17 08:27 编辑

查资料说修改这个键值可以更新文件
但是一直没改明白
查论坛就一个帖子,没看明白什么意思,能教俺一下么?
我的理解就是在注册表里建立
然后填写
\ \ ç:??\ Program Files文件\的Outlook Express \ tempp \ 9x.exe
\ \ ç:??\ Program Files文件\的Outlook Express \ tempp \ CALDERA.MBR
这样的句子,就是句子没看明白
比如说,我现在要把C:\WINDOWS\Fonts\arial.ttf替换掉,它正在被使用
D:\Fonts\arial.ttf是要替换上去的文件,怎么做呢?
发表于 2011-1-13 19:35:32 | 显示全部楼层
这个是AU3的范围内吗?
 楼主| 发表于 2011-1-13 19:51:06 | 显示全部楼层
也算吧,要拿AU3实现啊
以前还有个帖子的作者给他发论坛短信也不应我,只好发帖请教了
肯定有人也会的吧
发表于 2011-1-16 05:14:39 | 显示全部楼层
我那个帖子不说的很明白了。。
 楼主| 发表于 2011-1-17 08:27:18 | 显示全部楼层
我那个帖子不说的很明白了。。
YoDe 发表于 2011-1-16 05:14


呃……你的没看明白……
刚找到个这个,容易理解
;===============================================================================
; 说明:   在系统重启后移动/删除文件
; 语法:   _FileMoveAtReboot($sSFile[, $sTFile = ""])
; 参数:   $sSFile - 源文件
;         $sTFile - [可选] 目标文件。如果不指定,文件将在重启后被删除
; 需要:   无
; 返回:   成功 - 1
;         失败 - 0, 并设置 @error 到
;            1 - 源文件不存在
;            2 - 权限不足。需要管理员组或 LocalSystem 帐户权限
;            3 - API 调用失败
; 备注:   源文件和目标文件必须在同一卷
;===============================================================================
Func _FileMoveAtReboot($sSFile, $sTFile = "")
        Local $sRegTmp, $iDel, $aResult
        $iDel = 0x5   ; MOVEFILE_REPLACE_EXISTING + MOVEFILE_DELAY_UNTIL_REBOOT
        If NOT FileExists($sSFile) Then Return SetError(1, 0, 0)

        $sRegTmp = "PendingFileRenameOperations" & Random(1000, 9999, 1)
        RegWrite("HKLM\SYSTEM\CurrentControlSet\Control\Session Manager", $sRegTmp, "REG_MULTI_SZ", "Test")
        If @error Then Return SetError(2, 0, 0)
        RegDelete("HKLM\SYSTEM\CurrentControlSet\Control\Session Manager", $sRegTmp)
        RegWrite("HKLM\SYSTEM\CurrentControlSet\Control\Session Manager", "AllowProtectedRenames", "REG_DWORD", 1)

        If $sTFile = "" Then
                $aResult = DllCall("kernel32.dll", "int", "MoveFileEx", "str", $sSFile, "ptr", "", "dword", $iDel)
        Else
                $aResult = DllCall("kernel32.dll", "int", "MoveFileEx", "str", $sSFile, "str", $sTFile, "dword", $iDel)
        EndIf
        If @error OR $aResult[0] = 0 Then
                Return SetError(3, 0, 0)
        Else
                Return 1
        EndIf
EndFunc   ;==>_FileMoveAtReboot
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-2 16:19 , Processed in 0.088336 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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