找回密码
 加入
搜索
查看: 2479|回复: 0

[AU3基础] 同样注册为服务后启动,为什么删除文件的exe不起作用?

[复制链接]
发表于 2015-3-10 10:41:01 | 显示全部楼层 |阅读模式
本帖最后由 smooth 于 2015-3-11 18:43 编辑

情况是这样的,我写了一个监视打印服务的exe,内容如下:

While 1
    If _ServGetState("Spooler") = "Stopped" Then
        _Service_Start("Spooler")
    EndIf
WEnd

把这个exe注册成服务后启动,打印服务spooler就无法停止了。
但是我用同样的方法写了一个自动清空回收站的exe,内容如下:

#NoTrayIcon
While 1
    $recycle = _WinAPI_ShellQueryRecycleBin("")
    If $recycle[1] > 0 Then
            FileRecycleEmpty()
    EndIf
WEnd

Func _WinAPI_ShellQueryRecycleBin($sRoot = '')
    Local $tSHQRBI = DllStructCreate('align 4;dword_ptr;int64;int64')
    DllStructSetData($tSHQRBI, 1, DllStructGetSize($tSHQRBI))
    Local $Ret = DllCall('shell32.dll', 'long', 'SHQueryRecycleBinW', 'wstr', $sRoot, 'struct*', $tSHQRBI)
    If @error Then Return SetError(@error, @extended, 0)
    If $Ret[0] Then Return SetError(10, $Ret[0], 0)
    Local $Result[2]
    $Result[0] = DllStructGetData($tSHQRBI, 2)
    $Result[1] = DllStructGetData($tSHQRBI, 3)
    Return $Result
EndFunc   ;==>_WinAPI_ShellQueryRecycleBin

用同样的方法把这个EXE注册成系统服务启动后,却不能自动清空回收站,双击这个exe是可以的。按照道理,注册成服务启动后,这个脚本就一直在循环了。

为什么会有这样的差异呢?分析了很久都找不到原因。如下图,两个服务对应的EXE文件都已在运行。谢谢!


把这个EXE加入开机自动启动,可以自动清空回收站。

本帖子中包含更多资源

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

×
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-18 19:01 , Processed in 0.077087 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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