打开/关闭菜单
12
16
46
348
【VOCAKEY.WIKI】VOCAKEY愿你唱出心中的歌
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

Use-v4v3v2lib-on-v5v6:修订间差异

来自【VOCAKEY.WIKI】VOCAKEY愿你唱出心中的歌
F0x留言 | 贡献
无编辑摘要
MuratBeysss留言 | 贡献
添加折叠源代码复制
第16行: 第16行:
* VocaReg Legacy 3: https://pastebin.com/x61rappB<nowiki/>——让V5编辑器读取到V3版本的V2声库
* VocaReg Legacy 3: https://pastebin.com/x61rappB<nowiki/>——让V5编辑器读取到V3版本的V2声库


您可以选择访问以上链接或复制此处代码(我想在此处插入以上三份代码方便用户复制,默认折叠。但我不会编写,还请有能力的编辑者完善,谢谢。)
您可以选择访问以上链接或复制此处代码
 
===== 以下为源代码(过长 为保证阅读 已经折叠) =====
VocaReg 34
<div class="mw-collapsible mw-collapsed" style="border:1px solid #ddd;padding:4px;">
<pre>
;
; VocaReg 34.au3
; Version 1.1
; 25.01.2025
; Copyright (c) 2025, Kartoffelkeks87
;
; This file is distributed under the Creative Commons 4.0 CC BY-NC-SA
; https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
;
 
#RequireAdmin
 
#include <MsgBoxConstants.au3>
 
Global $sScriptTitle = "VocaReg"
 
Global $sKeys[4][3]
 
$sKeys[0][0] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VOCALOID3\DATABASE\VOICE2"
$sKeys[0][1] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\POCALOID3\DATABASE\VOICE2"
$sKeys[0][2] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VCLDASGN3\DATABASE\VOICE2"
 
$sKeys[1][0] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VOCALOID3\DATABASE\VOICE3"
$sKeys[1][1] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\POCALOID3\DATABASE\VOICE3"
$sKeys[1][2] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VCLDASGN3\DATABASE\VOICE3"
 
$sKeys[2][0] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VOCALOID4\DATABASE"
$sKeys[2][1] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\POCALOID4\DATABASE"
$sKeys[2][2] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VCLDFREE4\DATABASE"
 
$sKeys[3][0] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VOCALOID4\DATABASE41"
$sKeys[3][1] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\POCALOID4\DATABASE41"
$sKeys[3][2] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VCLDFREE4\DATABASE41"
 
Global $aRegValueType[12] = ["REG_NONE", "REG_SZ", "REG_EXPAND_SZ", "REG_BINARY", _
"REG_DWORD", "REG_DWORD", "REG_LINK", _
"REG_MULTI_SZ", "REG_RESOURCE_LIST", "REG_FULL_RESOURCE_DESCRIPTOR", _
"REG_RESOURCE_REQUIREMENTS_LIST", "REG_QWORD"]
 
Func ProcessKeys($sSource, $sDest)
  For $i = 1 To 256
  Local $sKey = RegEnumKey($sSource, $i)
  If @error then ExitLoop
  ConsoleWrite($sSource & '\' & $sKey & @CRLF)
  CopyKey($sSource & '\' & $sKey, $sDest & '\' & $sKey)
  Next
EndFunc
 
Func CopyKey($sSourceKey, $sDestKey)
Local $sName = RegRead($sSourceKey, "NAME")
If @error Then return
Local $sPath = RegRead($sSourceKey, "PATH")
If @error Then return
Local $iInstalled = RegRead($sSourceKey, "INSTALLED")
If @error Then return
If $iInstalled <> 1 Then return
Local $sTime = RegRead($sSourceKey, "TIME")
If @error Then $sTime = "BHMN74F9ED86FKAB"
Local $sDRP = RegRead($sSourceKey, "DRP")
If @error Then $sDRP = "0B0032"
Local $sKey = RegRead($sSourceKey & "\KEYS", "default")
If @error Then $sKey = "c845cfd4b8a90614d5b0f09eba7144d1"
 
RegWrite($sDestKey, "NAME", "REG_SZ", $sName)
RegWrite($sDestKey, "PATH", "REG_SZ", $sPath)
RegWrite($sDestKey, "INSTALLED", "REG_DWORD", 1)
RegWrite($sDestKey, "TIME", "REG_SZ", $sTime)
RegWrite($sDestKey, "DRP", "REG_SZ", $sDRP)
RegWrite($sDestKey & "\KEYS", "default", "REG_SZ", $sKey)
 
CloneKeys($sSourceKey & "\Presets", $sDestKey & "\Presets")
EndFunc
 
Func CloneKeys($sSource, $sDest)
  For $i = 1 To 256
  Local $sValue = RegEnumVal($sSource, $i)
  If @error then ExitLoop
  Local $iType = @extended
  Local $sData = RegRead($sSource, $sValue)
  ;ConsoleWrite($aRegValueType[$iType] & ' - ' & $sValue & ': ' & $sData & @CRLF)
  RegWrite($sDest, $sValue, $aRegValueType[$iType], $sData)
  If @error Then MsgBox($MB_OK + $MB_ICONERROR, $sScriptTitle, "Error writing registry.")
  Next
 
  For $i = 1 To 256
  Local $sKey = RegEnumKey($sSource, $i)
  If @error then ExitLoop
  ;ConsoleWrite($sSource & '\' & $sKey & @CRLF)
  CloneKeys($sSource & '\' & $sKey, $sDest & '\' & $sKey)
  Next
EndFunc
 
If MsgBox($MB_YESNO, $sScriptTitle, "Register all Vocaloid 3/4 FE voices for Vocaloid 5/6?") = $IDYES Then
  For $iKey = 0 To UBound($sKeys)-1
  For $iSubKey = 1 To UBound($sKeys,2)-1
ProcessKeys($sKeys[$iKey][$iSubKey], $sKeys[$iKey][0])
  Next
  Next
  ConsoleWrite(@CRLF & $sScriptTitle & " by Kartoffelkeks87")
  MsgBox(0, $sScriptTitle, "Finished!" & @CRLF & @CRLF & $sScriptTitle & " by Kartoffelkeks87")
Else
  ConsoleWrite("Abort by user.")
EndIf
</pre>
</div>
 
VocaReg Legacy 2
<div class="mw-collapsible mw-collapsed" style="border:1px solid #ddd;padding:4px;">
<pre>
;
; VocaReg Legacy 2.au3
; Version 1.0
; 27.05.2021
; Copyright (c) 2021, Kartoffelkeks87
;
; This file is distributed under the Creative Commons 4.0 CC BY-NC-SA
; https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
;
 
#RequireAdmin
 
#include <Array.au3>
#include <MsgBoxConstants.au3>
 
Global $sScriptTitle = "VocaReg Legacy 2"
 
Global $sSrcKeys2[3]
$sSrcKeys2[0] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VOCALOID2\DATABASE\VOICE\"
$sSrcKeys2[1] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\POCALOID2\DATABASE\VOICE\"
$sSrcKeys2[2] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\FOCALOID2\DATABASE\VOICE\"
 
Global $sDestKey = "HKEY_LOCAL_MACHINE64\SOFTWARE\VOCALOID5\Voice\Components\"
 
Global $aList[0][6]
Global $sList
 
For $iKey = 0 To UBound($sSrcKeys2)-1
  For $i = 1 To 256
  Local $sKey = RegEnumKey($sSrcKeys2[$iKey], $i)
  If @error Then ExitLoop
  Local $sPath = RegRead($sSrcKeys2[$iKey] & $sKey, "INSTALLDIR")
  If @error Then ContinueLoop
 
    Local $sName = RegRead($sSrcKeys2[$iKey] & $sKey, "NAME")
  If Not @error Then
Local $aName = StringRegExp($sName, "(?i)\((.*?)\)", $STR_REGEXPARRAYGLOBALMATCH, 1)
If Not @error Then
$sName = $aName[0]
If UBound($aName) > 1 Then $sName = $sName & " (" & $aName[1] & ")"
EndIf
  Else
$sName = $sPath
If StringRight($sName, 1) = '\' Then $sName = StringTrimRight($sName, 1)
$aName = StringSplit($sName, "\")
$sName = $aName[UBound($aName)-1]
$sName = StringReplace($sName, "\", " ")
  EndIf
  $sName = StringReplace($sName, "_", " ") & " (v2)"
 
  Local $sTime = RegRead($sSrcKeys2[$iKey] & $sKey, "TIME")
  If @error Then $sTime = "BKLHK5E5TNTKW5D6"
  Local $sDRP = RegRead($sSrcKeys2[$iKey] & $sKey, "DRP")
  If @error Then $sDRP = "060011"
  Local $sReg = RegRead($sSrcKeys2[$iKey] & $sKey & "\KEYS", "default")
  If @error Then $sReg = "65a9e9e2d3076f4d0839f883ad4f20f8"
 
  If _ArraySearch($aList, $sKey, 0, 0, 0, 0, 1, 0) = -1 Then
_ArrayAdd($aList, $sKey, 0)
$aList[UBound($aList)-1][1] = $sName
$aList[UBound($aList)-1][2] = $sPath
$aList[UBound($aList)-1][3] = $sTime
$aList[UBound($aList)-1][4] = $sDRP
$aList[UBound($aList)-1][5] = $sReg
$sList = $sList & $sName & @CRLF
ConsoleWrite($sKey & " " & $sName & " found." & @CRLF)
  Else
ConsoleWrite($sKey & " " & $sName & " already in list." & @CRLF)
  EndIf
  Next
Next
 
If MsgBox($MB_YESNO, $sScriptTitle, UBound($aList) & " Vocaloid2 voices found:" & @CRLF & @CRLF & $sList & @CRLF & @CRLF & "Register all for Vocaloid5?") = $IDYES Then
  For $i = 0 To UBound($aList)-1
  Local $sID = $aList[$i][0]
  Local $sName = $aList[$i][1]
  Local $sPath = $aList[$i][2]
  Local $sTime = $aList[$i][3]
  Local $sDRP = $aList[$i][4]
  Local $sReg = $aList[$i][5]
  RegWrite($sDestKey & $sID, "Name", "REG_SZ", $sName)
  If @error Then
If @error Then MsgBox($MB_OK + $MB_ICONERROR, $sScriptTitle, "Error writing registry.")
  EndIf
  RegWrite($sDestKey & $sID, "BankName", "REG_SZ", $sName)
  RegWrite($sDestKey & $sID, "Path", "REG_SZ", $sPath)
  RegWrite($sDestKey & $sID, "Date", "REG_SZ", $sTime)
  RegWrite($sDestKey & $sID, "DRP", "REG_SZ", $sDRP)
  RegWrite($sDestKey & $sID, "Key", "REG_SZ", $sReg)
  RegWrite($sDestKey & $sID & "\Version", "Major", "REG_DWORD", 5)
  RegWrite($sDestKey & $sID & "\Version", "Minor", "REG_DWORD", 0)
  RegWrite($sDestKey & $sID & "\Version", "Revision", "REG_DWORD", 1)
  ConsoleWrite(@error & '>')
  Next
 
  ConsoleWrite(@CRLF & $sScriptTitle & " by Kartoffelkeks87")
  MsgBox(0, $sScriptTitle, "Finished!" & @CRLF & @CRLF & $sScriptTitle & " by Kartoffelkeks87")
Else
  ConsoleWrite("Abort by user.")
EndIf
</pre>
</div>
 
VocaReg Legacy 3
<div class="mw-collapsible mw-collapsed" style="border:1px solid #ddd;padding:4px;">
<pre>
;
; VocaReg Legacy 3.au3
; Version 1.0
; 27.05.2021
; Copyright (c) 2021, Kartoffelkeks87
;
; This file is distributed under the Creative Commons 4.0 CC BY-NC-SA
; https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
;
 
#RequireAdmin
 
#include <Array.au3>
#include <MsgBoxConstants.au3>
 
Global $sScriptTitle = "VocaReg Legacy 3"
 
Global $sSrcKeys3[3]
$sSrcKeys3[0] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VOCALOID3\DATABASE\VOICE2\"
$sSrcKeys3[1] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\POCALOID3\DATABASE\VOICE2\"
$sSrcKeys3[2] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VCLDASGN3\DATABASE\VOICE2\"
 
Global $sDestKey = "HKEY_LOCAL_MACHINE64\SOFTWARE\VOCALOID5\Voice\Components\"
 
Global $aList[0][6]
Global $sList
 
For $iKey = 0 To UBound($sSrcKeys3)-1
  For $i = 1 To 256
  Local $sKey = RegEnumKey($sSrcKeys3[$iKey], $i)
  If @error Then ExitLoop
  Local $sPath = RegRead($sSrcKeys3[$iKey] & $sKey, "PATH")
  If @error Then ContinueLoop
 
  Local $sName = RegRead($sSrcKeys3[$iKey] & $sKey, "NAME")
  If Not @error Then
Local $aName = StringRegExp($sName, "(?i)\((.*?)\)", $STR_REGEXPARRAYGLOBALMATCH, 1)
If Not @error Then
$sName = $aName[0]
If UBound($aName) > 1 Then $sName = $sName & " (" & $aName[1] & ")"
$sName = StringReplace($sName, "_", " ")
EndIf
  Else
$sName = $sPath
If StringRight($sName, 1) = '\' Then $sName = StringTrimRight($sName, 1)
$aName = StringSplit($sName, "\")
$sName = $aName[UBound($aName)-1]
$sName = StringReplace($sName, "\", " ") & " (V2)"
  EndIf
  $sName = StringReplace($sName, "_", " ")
 
  $sKey = RegRead($sSrcKeys3[$iKey] & $sKey, "ORGID")
  If @error Then MsgBox($MB_OK + $MB_ICONERROR, $sScriptTitle, "Error reading key.")
  Local $sTime = RegRead($sSrcKeys3[$iKey] & $sKey, "TIME")
  If @error Then $sTime = "BKLHK5E5TNTKW5D6"
  Local $sDRP = RegRead($sSrcKeys3[$iKey] & $sKey, "DRP")
  If @error Then $sDRP = "060011"
  Local $sReg = RegRead($sSrcKeys3[$iKey] & $sKey & "\KEYS", "default")
  If @error Then $sReg = "65a9e9e2d3076f4d0839f883ad4f20f8"
 
  If _ArraySearch($aList, $sKey, 0, 0, 0, 0, 1, 0) = -1 Then
_ArrayAdd($aList, $sKey, 0)
$aList[UBound($aList)-1][1] = $sName
$aList[UBound($aList)-1][2] = $sPath
$aList[UBound($aList)-1][3] = $sTime
$aList[UBound($aList)-1][4] = $sDRP
$aList[UBound($aList)-1][5] = $sReg
$sList = $sList & $sName & @CRLF
ConsoleWrite($sKey & " " & $sName & " found." & @CRLF)
  Else
ConsoleWrite($sKey & " " & $sName & " already in list." & @CRLF)
  EndIf
  Next
Next
 
If MsgBox($MB_YESNO, $sScriptTitle, UBound($aList) & " Vocaloid3 V2 voices found:" & @CRLF & @CRLF & $sList & @CRLF & @CRLF & "Register all for Vocaloid5?") = $IDYES Then
  For $i = 0 To UBound($aList)-1
  Local $sID = $aList[$i][0]
  Local $sName = $aList[$i][1]
  Local $sPath = $aList[$i][2]
  Local $sTime = $aList[$i][3]
  Local $sDRP = $aList[$i][4]
  Local $sReg = $aList[$i][5]
  RegWrite($sDestKey & $sID, "Name", "REG_SZ", $sName)
  If @error Then
If @error Then MsgBox($MB_OK + $MB_ICONERROR, $sScriptTitle, "Error writing registry.")
  EndIf
  RegWrite($sDestKey & $sID, "BankName", "REG_SZ", $sName)
  RegWrite($sDestKey & $sID, "Path", "REG_SZ", $sPath)
  RegWrite($sDestKey & $sID, "Date", "REG_SZ", $sTime)
  RegWrite($sDestKey & $sID, "DRP", "REG_SZ", $sDRP)
  RegWrite($sDestKey & $sID, "Key", "REG_SZ", $sReg)
  RegWrite($sDestKey & $sID & "\Version", "Major", "REG_DWORD", 5)
  RegWrite($sDestKey & $sID & "\Version", "Minor", "REG_DWORD", 0)
  RegWrite($sDestKey & $sID & "\Version", "Revision", "REG_DWORD", 1)
  ConsoleWrite(@error & '>')
  Next
 
  ConsoleWrite(@CRLF & $sScriptTitle & " by Kartoffelkeks87")
  MsgBox(0, $sScriptTitle, "Finished!" & @CRLF & @CRLF & $sScriptTitle & " by Kartoffelkeks87")
Else
  ConsoleWrite("Abort by user.")
EndIf
</pre>
</div>


* 如果选择访问链接,您会在网页中看到“download”按钮,点击即可。
* 如果选择访问链接,您会在网页中看到“download”按钮,点击即可。

2025年12月3日 (三) 13:49的版本

VOCALOID5/6不识别V4/3/2声库的解决方案

VocaReg

来源:https://www.reddit.com/r/VocaTorrent/comments/1i9ygzg

作者:Kartoffelkeks87

由于直接分享文件的链接可能频繁失效,这里给出使用源代码自行编译的教程。别担心,这并不复杂。

1.准备工作

1.1 获取源代码

您可以选择访问以上链接或复制此处代码

以下为源代码(过长 为保证阅读 已经折叠)

VocaReg 34

;
; VocaReg 34.au3
; Version 1.1
; 25.01.2025
; Copyright (c) 2025, Kartoffelkeks87
;
; This file is distributed under the Creative Commons 4.0 CC BY-NC-SA
; https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
;

#RequireAdmin

#include <MsgBoxConstants.au3>

Global $sScriptTitle = "VocaReg"

Global $sKeys[4][3]

$sKeys[0][0] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VOCALOID3\DATABASE\VOICE2"
$sKeys[0][1] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\POCALOID3\DATABASE\VOICE2"
$sKeys[0][2] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VCLDASGN3\DATABASE\VOICE2"

$sKeys[1][0] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VOCALOID3\DATABASE\VOICE3"
$sKeys[1][1] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\POCALOID3\DATABASE\VOICE3"
$sKeys[1][2] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VCLDASGN3\DATABASE\VOICE3"

$sKeys[2][0] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VOCALOID4\DATABASE"
$sKeys[2][1] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\POCALOID4\DATABASE"
$sKeys[2][2] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VCLDFREE4\DATABASE"

$sKeys[3][0] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VOCALOID4\DATABASE41"
$sKeys[3][1] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\POCALOID4\DATABASE41"
$sKeys[3][2] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VCLDFREE4\DATABASE41"

Global $aRegValueType[12] = ["REG_NONE", "REG_SZ", "REG_EXPAND_SZ", "REG_BINARY", _
		 "REG_DWORD", "REG_DWORD", "REG_LINK", _
		 "REG_MULTI_SZ", "REG_RESOURCE_LIST", "REG_FULL_RESOURCE_DESCRIPTOR", _
		 "REG_RESOURCE_REQUIREMENTS_LIST", "REG_QWORD"]

Func ProcessKeys($sSource, $sDest)
   For $i = 1 To 256
	  Local $sKey = RegEnumKey($sSource, $i)
	  If @error then ExitLoop
	  ConsoleWrite($sSource & '\' & $sKey & @CRLF)
	  CopyKey($sSource & '\' & $sKey, $sDest & '\' & $sKey)
   Next
EndFunc

Func CopyKey($sSourceKey, $sDestKey)
	Local $sName = RegRead($sSourceKey, "NAME")
	If @error Then return
	Local $sPath = RegRead($sSourceKey, "PATH")
	If @error Then return
	Local $iInstalled = RegRead($sSourceKey, "INSTALLED")
	If @error Then return
	If $iInstalled <> 1 Then return
	Local $sTime = RegRead($sSourceKey, "TIME")
	If @error Then $sTime = "BHMN74F9ED86FKAB"
	Local $sDRP = RegRead($sSourceKey, "DRP")
	If @error Then $sDRP = "0B0032"
	Local $sKey = RegRead($sSourceKey & "\KEYS", "default")
	If @error Then $sKey = "c845cfd4b8a90614d5b0f09eba7144d1"

	RegWrite($sDestKey, "NAME", "REG_SZ", $sName)
	RegWrite($sDestKey, "PATH", "REG_SZ", $sPath)
	RegWrite($sDestKey, "INSTALLED", "REG_DWORD", 1)
	RegWrite($sDestKey, "TIME", "REG_SZ", $sTime)
	RegWrite($sDestKey, "DRP", "REG_SZ", $sDRP)
	RegWrite($sDestKey & "\KEYS", "default", "REG_SZ", $sKey)

	CloneKeys($sSourceKey & "\Presets", $sDestKey & "\Presets")
EndFunc

Func CloneKeys($sSource, $sDest)
   For $i = 1 To 256
	  Local $sValue = RegEnumVal($sSource, $i)
	  If @error then ExitLoop
	  Local $iType = @extended
	  Local $sData = RegRead($sSource, $sValue)
	  ;ConsoleWrite($aRegValueType[$iType] & ' - ' & $sValue & ': ' & $sData & @CRLF)
	  RegWrite($sDest, $sValue, $aRegValueType[$iType], $sData)
	  If @error Then MsgBox($MB_OK + $MB_ICONERROR, $sScriptTitle, "Error writing registry.")
   Next

   For $i = 1 To 256
	  Local $sKey = RegEnumKey($sSource, $i)
	  If @error then ExitLoop
	  ;ConsoleWrite($sSource & '\' & $sKey & @CRLF)
	  CloneKeys($sSource & '\' & $sKey, $sDest & '\' & $sKey)
   Next
EndFunc

If MsgBox($MB_YESNO, $sScriptTitle, "Register all Vocaloid 3/4 FE voices for Vocaloid 5/6?") = $IDYES Then
   For $iKey = 0 To UBound($sKeys)-1
	  For $iSubKey = 1 To UBound($sKeys,2)-1
		 ProcessKeys($sKeys[$iKey][$iSubKey], $sKeys[$iKey][0])
	  Next
   Next
   ConsoleWrite(@CRLF & $sScriptTitle & " by Kartoffelkeks87")
   MsgBox(0, $sScriptTitle, "Finished!" & @CRLF & @CRLF & $sScriptTitle & " by Kartoffelkeks87")
Else
   ConsoleWrite("Abort by user.")
EndIf

VocaReg Legacy 2

;
; VocaReg Legacy 2.au3
; Version 1.0
; 27.05.2021
; Copyright (c) 2021, Kartoffelkeks87
;
; This file is distributed under the Creative Commons 4.0 CC BY-NC-SA
; https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
;

#RequireAdmin

#include <Array.au3>
#include <MsgBoxConstants.au3>

Global $sScriptTitle = "VocaReg Legacy 2"

Global $sSrcKeys2[3]
$sSrcKeys2[0] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VOCALOID2\DATABASE\VOICE\"
$sSrcKeys2[1] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\POCALOID2\DATABASE\VOICE\"
$sSrcKeys2[2] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\FOCALOID2\DATABASE\VOICE\"

Global $sDestKey = "HKEY_LOCAL_MACHINE64\SOFTWARE\VOCALOID5\Voice\Components\"

Global $aList[0][6]
Global $sList

For $iKey = 0 To UBound($sSrcKeys2)-1
   For $i = 1 To 256
	  Local $sKey = RegEnumKey($sSrcKeys2[$iKey], $i)
	  If @error Then ExitLoop
	  Local $sPath = RegRead($sSrcKeys2[$iKey] & $sKey, "INSTALLDIR")
	  If @error Then ContinueLoop

   	  Local $sName = RegRead($sSrcKeys2[$iKey] & $sKey, "NAME")
	  If Not @error Then
		 Local $aName = StringRegExp($sName, "(?i)\((.*?)\)", $STR_REGEXPARRAYGLOBALMATCH, 1)
		 If Not @error Then
			$sName = $aName[0]
			If UBound($aName) > 1 Then $sName = $sName & " (" & $aName[1] & ")"
		 EndIf
	  Else
		 $sName = $sPath
		 If StringRight($sName, 1) = '\' Then $sName = StringTrimRight($sName, 1)
		 $aName = StringSplit($sName, "\")
		 $sName = $aName[UBound($aName)-1]
		 $sName = StringReplace($sName, "\", " ")
	  EndIf
	  $sName = StringReplace($sName, "_", " ") & " (v2)"

	  Local $sTime = RegRead($sSrcKeys2[$iKey] & $sKey, "TIME")
	  If @error Then $sTime = "BKLHK5E5TNTKW5D6"
	  Local $sDRP = RegRead($sSrcKeys2[$iKey] & $sKey, "DRP")
	  If @error Then $sDRP = "060011"
	  Local $sReg = RegRead($sSrcKeys2[$iKey] & $sKey & "\KEYS", "default")
	  If @error Then $sReg = "65a9e9e2d3076f4d0839f883ad4f20f8"

	  If _ArraySearch($aList, $sKey, 0, 0, 0, 0, 1, 0) = -1 Then
		 _ArrayAdd($aList, $sKey, 0)
		 $aList[UBound($aList)-1][1] = $sName
		 $aList[UBound($aList)-1][2] = $sPath
		 $aList[UBound($aList)-1][3] = $sTime
		 $aList[UBound($aList)-1][4] = $sDRP
		 $aList[UBound($aList)-1][5] = $sReg
		 $sList = $sList & $sName & @CRLF
		 ConsoleWrite($sKey & " " & $sName & " found." & @CRLF)
	  Else
		 ConsoleWrite($sKey & " " & $sName & " already in list." & @CRLF)
	  EndIf
   Next
Next

If MsgBox($MB_YESNO, $sScriptTitle, UBound($aList) & " Vocaloid2 voices found:" & @CRLF & @CRLF & $sList & @CRLF & @CRLF & "Register all for Vocaloid5?") = $IDYES Then
   For $i = 0 To UBound($aList)-1
	  Local $sID = $aList[$i][0]
	  Local $sName = $aList[$i][1]
	  Local $sPath = $aList[$i][2]
	  Local $sTime = $aList[$i][3]
	  Local $sDRP = $aList[$i][4]
	  Local $sReg = $aList[$i][5]
	  RegWrite($sDestKey & $sID, "Name", "REG_SZ", $sName)
	  If @error Then
		 If @error Then MsgBox($MB_OK + $MB_ICONERROR, $sScriptTitle, "Error writing registry.")
	  EndIf
	  RegWrite($sDestKey & $sID, "BankName", "REG_SZ", $sName)
	  RegWrite($sDestKey & $sID, "Path", "REG_SZ", $sPath)
	  RegWrite($sDestKey & $sID, "Date", "REG_SZ", $sTime)
	  RegWrite($sDestKey & $sID, "DRP", "REG_SZ", $sDRP)
	  RegWrite($sDestKey & $sID, "Key", "REG_SZ", $sReg)
	  RegWrite($sDestKey & $sID & "\Version", "Major", "REG_DWORD", 5)
	  RegWrite($sDestKey & $sID & "\Version", "Minor", "REG_DWORD", 0)
	  RegWrite($sDestKey & $sID & "\Version", "Revision", "REG_DWORD", 1)
	  ConsoleWrite(@error & '>')
   Next

   ConsoleWrite(@CRLF & $sScriptTitle & " by Kartoffelkeks87")
   MsgBox(0, $sScriptTitle, "Finished!" & @CRLF & @CRLF & $sScriptTitle & " by Kartoffelkeks87")
Else
   ConsoleWrite("Abort by user.")
EndIf

VocaReg Legacy 3

;
; VocaReg Legacy 3.au3
; Version 1.0
; 27.05.2021
; Copyright (c) 2021, Kartoffelkeks87
;
; This file is distributed under the Creative Commons 4.0 CC BY-NC-SA
; https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
;

#RequireAdmin

#include <Array.au3>
#include <MsgBoxConstants.au3>

Global $sScriptTitle = "VocaReg Legacy 3"

Global $sSrcKeys3[3]
$sSrcKeys3[0] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VOCALOID3\DATABASE\VOICE2\"
$sSrcKeys3[1] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\POCALOID3\DATABASE\VOICE2\"
$sSrcKeys3[2] = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\VCLDASGN3\DATABASE\VOICE2\"

Global $sDestKey = "HKEY_LOCAL_MACHINE64\SOFTWARE\VOCALOID5\Voice\Components\"

Global $aList[0][6]
Global $sList

For $iKey = 0 To UBound($sSrcKeys3)-1
   For $i = 1 To 256
	  Local $sKey = RegEnumKey($sSrcKeys3[$iKey], $i)
	  If @error Then ExitLoop
	  Local $sPath = RegRead($sSrcKeys3[$iKey] & $sKey, "PATH")
	  If @error Then ContinueLoop

	  Local $sName = RegRead($sSrcKeys3[$iKey] & $sKey, "NAME")
	  If Not @error Then
		 Local $aName = StringRegExp($sName, "(?i)\((.*?)\)", $STR_REGEXPARRAYGLOBALMATCH, 1)
		 If Not @error Then
			$sName = $aName[0]
			If UBound($aName) > 1 Then $sName = $sName & " (" & $aName[1] & ")"
			$sName = StringReplace($sName, "_", " ")
		 EndIf
	  Else
		 $sName = $sPath
		 If StringRight($sName, 1) = '\' Then $sName = StringTrimRight($sName, 1)
		 $aName = StringSplit($sName, "\")
		 $sName = $aName[UBound($aName)-1]
		 $sName = StringReplace($sName, "\", " ") & " (V2)"
	  EndIf
	  $sName = StringReplace($sName, "_", " ")

	  $sKey = RegRead($sSrcKeys3[$iKey] & $sKey, "ORGID")
	  If @error Then MsgBox($MB_OK + $MB_ICONERROR, $sScriptTitle, "Error reading key.")
	  Local $sTime = RegRead($sSrcKeys3[$iKey] & $sKey, "TIME")
	  If @error Then $sTime = "BKLHK5E5TNTKW5D6"
	  Local $sDRP = RegRead($sSrcKeys3[$iKey] & $sKey, "DRP")
	  If @error Then $sDRP = "060011"
	  Local $sReg = RegRead($sSrcKeys3[$iKey] & $sKey & "\KEYS", "default")
	  If @error Then $sReg = "65a9e9e2d3076f4d0839f883ad4f20f8"

	  If _ArraySearch($aList, $sKey, 0, 0, 0, 0, 1, 0) = -1 Then
		 _ArrayAdd($aList, $sKey, 0)
		 $aList[UBound($aList)-1][1] = $sName
		 $aList[UBound($aList)-1][2] = $sPath
		 $aList[UBound($aList)-1][3] = $sTime
		 $aList[UBound($aList)-1][4] = $sDRP
		 $aList[UBound($aList)-1][5] = $sReg
		 $sList = $sList & $sName & @CRLF
		 ConsoleWrite($sKey & " " & $sName & " found." & @CRLF)
	  Else
		 ConsoleWrite($sKey & " " & $sName & " already in list." & @CRLF)
	  EndIf
   Next
Next

If MsgBox($MB_YESNO, $sScriptTitle, UBound($aList) & " Vocaloid3 V2 voices found:" & @CRLF & @CRLF & $sList & @CRLF & @CRLF & "Register all for Vocaloid5?") = $IDYES Then
   For $i = 0 To UBound($aList)-1
	  Local $sID = $aList[$i][0]
	  Local $sName = $aList[$i][1]
	  Local $sPath = $aList[$i][2]
	  Local $sTime = $aList[$i][3]
	  Local $sDRP = $aList[$i][4]
	  Local $sReg = $aList[$i][5]
	  RegWrite($sDestKey & $sID, "Name", "REG_SZ", $sName)
	  If @error Then
		 If @error Then MsgBox($MB_OK + $MB_ICONERROR, $sScriptTitle, "Error writing registry.")
	  EndIf
	  RegWrite($sDestKey & $sID, "BankName", "REG_SZ", $sName)
	  RegWrite($sDestKey & $sID, "Path", "REG_SZ", $sPath)
	  RegWrite($sDestKey & $sID, "Date", "REG_SZ", $sTime)
	  RegWrite($sDestKey & $sID, "DRP", "REG_SZ", $sDRP)
	  RegWrite($sDestKey & $sID, "Key", "REG_SZ", $sReg)
	  RegWrite($sDestKey & $sID & "\Version", "Major", "REG_DWORD", 5)
	  RegWrite($sDestKey & $sID & "\Version", "Minor", "REG_DWORD", 0)
	  RegWrite($sDestKey & $sID & "\Version", "Revision", "REG_DWORD", 1)
	  ConsoleWrite(@error & '>')
   Next

   ConsoleWrite(@CRLF & $sScriptTitle & " by Kartoffelkeks87")
   MsgBox(0, $sScriptTitle, "Finished!" & @CRLF & @CRLF & $sScriptTitle & " by Kartoffelkeks87")
Else
   ConsoleWrite("Abort by user.")
EndIf
  • 如果选择访问链接,您会在网页中看到“download”按钮,点击即可。
  • 您也可以新建文本文档然后复制代码并保存。

至此,您应该获得了xx.txt,请将后缀修改为.au3(如VocaReg 34.au3)。

1.2 获取AutoIt工具

点击下载https://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3.zip ,解压到合适的地方。

2.将源代码编译成exe

解压后您应当可以在图示路径找到Aut2exe_x64.exe[1]
打开后如图设置(文件路径请根据您的实际情况修改),点击Convert[2]

3.运行exe

如果一切顺利,它会显示成功了。您可以打开编辑器检查是否有效,然后您可以将刚刚下载的文件全部删除,您不再需要它们了。