services.au3 创建服务有问题 大家别用了
本帖最后由 pighead456 于 2012-4-9 16:31 编辑主要问题 出现在 变量 $vdepend 上面用来创建依存服务的
如果使用数组 会 填充 乱码 以及 建立 错漏的 服务出现乱码 不是什么编码问题
我的代码 都是英文的
我测试了 好几天 才发现的
同样 用 sc 创建的 没问题
回复 1# pighead456
把使用环境也顺便报上来吧.
services.au3 出来很久了, 你是第1个叫我们别用了. 本帖最后由 Qokelate 于 2012-4-9 16:45 编辑
请先确认你代码有没问题!!! 什么叫数组填充?不理解
如果使用数组 会 填充 乱码 以及 建立 错漏的 服务出现乱码 不是什么编码问题
请先确认你代码有没问题!!! 什么叫数组填充?不理解
Qokelate 发表于 2012-4-9 16:44 http://www.autoitx.com/images/common/back.gif
你没接触到这么高级的代码 你不懂 回复pighead456
把使用环境也顺便报上来吧.
services.au3 出来很久了, 你是第1个叫我们别用了.
user3000 发表于 2012-4-9 16:36 http://www.autoitx.com/images/common/back.gif
一般简单的 使用 不会出错 错误在 依存关系的 变量 这样说很没有说服力,直接贴代码吧,并且把调用到的创建服务的函数也贴上来。 回复 4# pighead456
好吧 , 我不懂你牛叉 这么叼你自己写API啊 用别人的UDF干嘛呢 本帖最后由 pighead456 于 2012-4-9 19:53 编辑
这样说很没有说服力,直接贴代码吧,并且把调用到的创建服务的函数也贴上来。
pusofalse 发表于 2012-4-9 18:12 http://www.autoitx.com/images/common/back.gif#include<services.au3>
Dim $ServiceSdepend
$ServiceSdepend="IPSec"
$ServiceSdepend="RPCSS"
MsgBox(0,0,$ServiceSdepend)
_Service_Create("PolicyAgent","IPSEC Services",0x00000010,0x00000002,0x00000001,"%windir%\system32\lsass.exe","","",$ServiceSdepend)
测试 首先 删除 服务 再用 上面的 代码 创建 服务 既可
sc delete policyagent
用 au3代码 创建的 服务 启动 会失败 注册表 内 有乱码
而用 sc 创建的 服务 则 完全正常
补充一下 :
如果 创建的 服务 不使用 依存服务的话 那么 au3 创建的 服务 也是 正常的 打开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。 打开services.au3,找到_Service_Create函数,你会发现有其中这样一段代码:
将这段代码替换为:
...
pusofalse 发表于 2012-4-9 20:12 http://www.autoitx.com/images/common/back.gif
记录下来 回头测试一下 谢谢 打开services.au3,找到_Service_Create函数,你会发现有其中这样一段代码:
将这段代码替换为:
...
pusofalse 发表于 2012-4-9 20:12 http://www.autoitx.com/images/common/back.gif
更新到汉化版里去吧。 看来这种提问的方式很有效撒 回复 7# Qokelate
和这种人没有必要生气,看看他的ID就知道咯! 回复 9# pusofalse
P版一般不出手,出手则惊人! 回复Qokelate
和这种人没有必要生气,看看他的ID就知道咯!
xms77 发表于 2012-4-11 21:09 http://www.autoitx.com/images/common/back.gif
恩 没必要生气 看见 你的头像 就想笑
{:face (303):}