Old Registry: 130425075500000001010 New Registry: 20130425 075500 1010 00 0 00 0 01
Confirma que es correcto, porque a mi no me cuadran las cosas, como ves obtengo esto:
Código:
20130425 075500 1010 00 0 00 0 01
Pero según tus indicaciones la ficha debería ser "0101"
Deberías especificar cual es el registro fijo de este string: 130425075500000001010
Yo he asumido que la ficha eran los últimos 4 dígitos, pero quizás haya que eliminar el último dígito y coger los ultimos 4, entonces modifica esta línea:
Código:
Set "Ficha=!Registry:~-4!"
Por esta otra:
Código:
Set "Ficha=!Registry:~-5!" & Set "Ficha=!Ficha:~0,4!"
Así obtienes exáctamente el nuevo registro, pero como no sé la estructura del antiguo registro... no sé si es lo correcto.
Muchos detalles, pero falta el más importante... ¿Para Linux o para Windows?, vale, acabo de leer lo del Notepad, a no ser que uses Wine para abrir el notepad en Linux me imagino que trabajs en Windows, haz el favor de especificar el detalle cuando formules preguntas.
Que windows trabaja a un nivel mas bajo que linux y tal...
Que Batch séa un "retrasado" no significa que la shell de Linux séa increíblemente superior a la de Windows, Windows además de Batch también dispone el uso nativo de VisualBasicScript, Jscript, y Powershell, puedes hacer de todo. Si no me equivoco Linux solo dispone de Bash como lenguaje nativo (No lo sé seguro pero...), así que tu me dirás.
Claro, no puedes iniciar un servicio que ya se encuentra iniciado, ni detener uno que ya está detenido.
De todas formas no dás ningún detalle acerca del error, solo dices que "falla", podrías haber mostrado la excepción porque no somos magos para adivinar lo que ocurre.
Pero deduzco que el problema es ese porque en tu código no compruebas el estado del servicio. solo puede ser eso, o que el servicio no se pueda detener por alguna dependencia.
Usa un convertidor online de VBNET a C# con esta función que hice, y listo:
Al final probando cosas he conseguido hacer el código:
Código:
@Echo OFF Setlocal enabledelayedexpansion
Set "Name=ElektroSoft" Set "Password=Elektro" Set "InitialDate=01/01/2013" Set "ExpireDate=01/01/2050" Set "SerialNumber=%Random%%Random%%Random%%Random%%Random%"
:: Make certificate makecert -r -pe -a sha1 -n "CN=%Name%" -b "%InitialDate%" -e "%ExpireDate%" -$ individual -sr LocalMachine -ss my -cy authority -# "%SerialNumber%" "%Name%.cer"
:: Export certificate For /F "Tokens=2 delims=:" %%# in ('certutil -store my') DO ( if "%%#" NEQ " CN=%Name%" (Set "SerialNumberHash=%%#") ELSE ( certutil -exportPFX -p "%Password%" my "!SerialNumberHash: =!" "%Name%.pfx" Pause&Exit))
:: Check certificate REM certutil -store my
:: Delete certificate REM certutil -delstore MY "%Name%"
No me gusta criticar los códigos de los demás pero te has pasado!, desde luego esa no es la manera de hacer las cosas bien...
Ya que vas a usar todo el alfabeto, te recomiendo que lo primero de todo definas el valor de cada letra y lo guardes en algún sitio...así lo tendrás más ordenado y mayor control si luego quieres cambiar algún número...