找回密码
 加入
搜索
查看: 17614|回复: 31

[系统综合] services.au3 创建服务有问题 大家别用了

 火... [复制链接]
发表于 2012-4-9 16:27:43 | 显示全部楼层 |阅读模式
本帖最后由 pighead456 于 2012-4-9 16:31 编辑

主要问题 出现在 变量 $vdepend 上面  用来创建依存服务的

如果使用数组 会 填充 乱码 以及 建立 错漏的 服务  出现乱码 不是什么编码问题  

我的代码 都是英文的

我测试了 好几天 才发现的

同样 用 sc 创建的 没问题

本帖子中包含更多资源

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

×
发表于 2012-4-9 16:36:48 | 显示全部楼层
回复 1# pighead456

把使用环境也顺便报上来吧.
    services.au3 出来很久了, 你是第1个叫我们别用了.
发表于 2012-4-9 16:44:28 | 显示全部楼层
本帖最后由 Qokelate 于 2012-4-9 16:45 编辑

请先确认你代码有没问题!!!    什么叫数组填充?  不理解
如果使用数组 会 填充 乱码 以及 建立 错漏的 服务  出现乱码 不是什么编码问题
 楼主| 发表于 2012-4-9 17:55:53 | 显示全部楼层
请先确认你代码有没问题!!!    什么叫数组填充?  不理解
Qokelate 发表于 2012-4-9 16:44



    你没接触到这么高级的代码 你不懂
 楼主| 发表于 2012-4-9 17:56:59 | 显示全部楼层
回复  pighead456

把使用环境也顺便报上来吧.
    services.au3 出来很久了, 你是第1个叫我们别用了.
user3000 发表于 2012-4-9 16:36



    一般简单的 使用 不会出错 错误在 依存关系的 变量
发表于 2012-4-9 18:12:47 | 显示全部楼层
这样说很没有说服力,直接贴代码吧,并且把调用到的创建服务的函数也贴上来。
发表于 2012-4-9 18:51:44 | 显示全部楼层
回复 4# pighead456


    好吧 , 我不懂  你牛叉   这么叼  你自己写API啊   用别人的UDF干嘛呢
 楼主| 发表于 2012-4-9 19:39:04 | 显示全部楼层
本帖最后由 pighead456 于 2012-4-9 19:53 编辑
这样说很没有说服力,直接贴代码吧,并且把调用到的创建服务的函数也贴上来。
pusofalse 发表于 2012-4-9 18:12
#include<services.au3>
Dim $ServiceSdepend[2]
$ServiceSdepend[0]="IPSec"
$ServiceSdepend[1]="RPCSS"
MsgBox(0,0,$ServiceSdepend)
_Service_Create("PolicyAgent","IPSEC Services",0x00000010,0x00000002,0x00000001,"%windir%\system32\lsass.exe","","",$ServiceSdepend)
测试 首先 删除 服务 再用 上面的 代码 创建 服务 既可

sc delete policyagent

用 au3代码 创建的 服务 启动 会失败 注册表 内 有乱码

而用 sc 创建的 服务 则 完全正常

补充一下 :

如果 创建的 服务 不使用 依存服务的话 那么 au3 创建的 服务 也是 正常的

评分

参与人数 1金钱 +10 收起 理由
user3000 + 10 比1楼的表述清晰多了~!

查看全部评分

发表于 2012-4-9 20:12:22 | 显示全部楼层
打开services.au3,找到_Service_Create函数,你会发现有其中这样一段代码:
        If IsArray($vDependencies) Then
                Local $iDepend, $tagDepend
                $iDepend = UBound($vDependencies) - 1
                For $i = 0 To $iDepend
                        $tagDepend &= "wchar[" & StringLen($vDependencies[$i]) + 1 & "];"
                Next
                $tDepend = DllStructCreate(StringTrimRight($tagDepend, 1))
                For $i = 0 To $iDepend
                        DllStructSetData($tDepend, $i + 1, $vDependencies[$i])
                Next
        Else
                $tDepend = DllStructCreate("wchar[" & Number($vDependencies <> Default) * (StringLen($vDependencies) + 1) & "]")
                DllStructSetData($tDepend, 1, $vDependencies)
        EndIf


将这段代码替换为:
        If IsArray($vDependencies) Then
                Local $iDepend, $tagDepend
                $iDepend = UBound($vDependencies) - 1
                For $i = 0 To $iDepend
                        if $i = $iDepend Then
                                $tagDepend &= "wchar[" & StringLen($vDependencies[$i]) + 2 & "];"
                        Else
                                $tagDepend &= "wchar[" & StringLen($vDependencies[$i]) + 1 & "];"
                        EndIf
                Next
                $tDepend = DllStructCreate(StringTrimRight($tagDepend, 1))
                For $i = 0 To $iDepend
                        DllStructSetData($tDepend, $i + 1, $vDependencies[$i])
                Next
        Else
                $tDepend = DllStructCreate("wchar[" & Number($vDependencies <> Default) * (StringLen($vDependencies) + 2) & "]")
                DllStructSetData($tDepend, 1, $vDependencies)
        EndIf


指定依存服务的参数,是用NULL字符分割的字符串,最后应该追加一个NULL。

评分

参与人数 4金钱 +60 贡献 +18 收起 理由
xms77 + 30 + 5 P版一般不出手,出手则惊人!
user3000 + 3 cool
pighead456 + 20
xyhqqaa + 10 + 10 新手。。还看不懂。。。先膜拜下

查看全部评分

 楼主| 发表于 2012-4-9 22:01:39 | 显示全部楼层
打开services.au3,找到_Service_Create函数,你会发现有其中这样一段代码:


将这段代码替换为:


...
pusofalse 发表于 2012-4-9 20:12

记录下来 回头测试一下 谢谢
发表于 2012-4-10 08:37:45 | 显示全部楼层
打开services.au3,找到_Service_Create函数,你会发现有其中这样一段代码:


将这段代码替换为:


...
pusofalse 发表于 2012-4-9 20:12


更新到汉化版里去吧。
发表于 2012-4-11 18:44:23 | 显示全部楼层
看来这种提问的方式很有效撒
发表于 2012-4-11 21:09:15 | 显示全部楼层
回复 7# Qokelate
和这种人没有必要生气,看看他的ID就知道咯!
发表于 2012-4-11 21:12:00 | 显示全部楼层
回复 9# pusofalse
P版一般不出手,出手则惊人!
 楼主| 发表于 2012-4-11 21:13:44 | 显示全部楼层
回复  Qokelate
和这种人没有必要生气,看看他的ID就知道咯!
xms77 发表于 2012-4-11 21:09



    恩 没必要生气 看见 你的头像 就想笑

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

本版积分规则

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

GMT+8, 2024-11-16 17:48 , Processed in 0.093699 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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