ASR
Bienvenido a la documentación de ASR.
ASR (Auto Service RegFile) es un servicio que ejecuta las tareas encomensadas en el archivo de RegFile.
Conceptos
El archivo de registro de RegFile, contiene un Group ( key de nivel superior) de sistema llamado Auto Service RegFile. Esta key es la que ASR utiliza para buscar servicios ( RegFileService) y ejecutarlos.
El funcionamiento básico es: obtener el archivo designado en la propiedad Program y ejecutarlo con un Process de .Net agregando los argumentos de la propiedad Param.
Muestra de ejemplo de código en C#: Process.Start(Program, Param);
Este evento se produce según índique el servicio, antes y después del Process.
Puesta en marcha
ASR debe añadirse en el menu start del sistema para que se ejecute en Background automáticamente cada vez que reiniciemos el sistema.
Argumentos de entrada
Con los argumentos de entrada de ASR puede iniciarse con credenciales y también con una de las tres opciones de inicio.
Ejecutar con un solo parámetro de entrada. Se inicia para acceder a los directorios (key) indicados en asr.TxJBin
' con credenciales
Auto Service RegFile.exe "myPass"
' sin credenciales
Auto Service RegFile.exe
Ejecutar con 2 parámetros de entrada. Se inicia para acceder a los directorios (key) indicados en asr.TxJBin. Aquí se inicia el camino de trabajar en una red local. Si no se desea iniciar con credenciales, el primer argumento se deja vacio.
' con credenciales
Auto Service RegFile.exe "myPass" "\\myRed\\pc2\\folderWork"
' sin credenciales
Auto Service RegFile.exe "" "\\myRed\\pc2\\folderWork"
Ejecutar con 4 parámetros de entrada. Se inicia para acceder a los directorios (key) indicados en asr.TxJBin. Aquí se inicia el camino de trabajar en un servidor mediante el protocolo FTP. Si no se desea iniciar con credenciales, el primer argumento se deja vacio.
El argumento 2 en esta opción debe ser una dirección Uri válida, sino se producirá un error y no se iniciará ASR.
' con credenciales
Auto Service RegFile.exe "myPass" "ftp://www.mydomain.com/folderWork" "myuserFTP" "mypassFTP"
' sin credenciales
Auto Service RegFile.exe "" "ftp://www.mydomain.com/folderWork" "myuserFTP" "mypassFTP"
Arquitectura
En el mismo directorio existe un archivo de configuración llamado 'asr.TxJbin'. Este archivo es de texto en formato TxJBin con la estructura de inicio:
En el siguiente ejemplo, vamos a crear un servicio, dentro de una key en 'Auto Service RegFile' de RegFile. Para que el servicio de ASR pueda leerlo, debemos especificarselo en el archivo de configuración 'asrTxJbin'.
ASR = [
MyBusiness = [
KeyCrawl = "My Business";
SecondCrawl = 360;
AutoStart = 1;
]
]
Archivo de texto en formato TxJBin
Ejemplo en VB.Net
Imports System.IO
Imports JBin
Public Class Form1
' Declarar RegFile
Dim WithEvents myRegFile As RegFile
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' Instanciar la clase
myRegFile = New RegFile
' Inicar RegFile en modo local.
myRegFile.Start()
' Añadir una key group a la raiz.
Dim rn As New Key = new Key
rn.Name = "Nuevo grupo"
rn.IndexIcon = 0
rn.Privileges = RegFilePrivileges.ReadWrite
Dim r As New Key = myRegFile.AddGroup(rn);
if IsNothing(r) Then
MsgBox("Error al crear la key group.", "Error!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
End If
' Añadir una key a la key group.
Dim newKey As New Key = new Key
newKey.Name = "Nueva key"
newKey.IndexIcon = 0
newKey.Privileges = RegFilePrivileges.ReadWrite
Dim K As New Key = myRegFile.AddKey("Nuevo grupo", newKey)
if IsNothing(k) then
MsgBox("Error al crear la key.", "Error!!", MessageBoxButtons.OK, MessageBoxIcon.Error)
exit sub
End If
' Cogemos la key
Dim myKey As New Key = myRegFile.GetKey("Nuevo Grupo/Nueva key")
if Not IsNothing(myKey) Then
' Agregamos un registro
Dim myReg As New Reg = new Reg
reg.Name = "myRegistro"
reg.Privileges = RegFilePrivileges.ReadWrite
reg.Password = "Valor del registro"
reg.TypeValue = RegFileTypeReg.REG_STRING
Dim resReg As New Reg = myRegFile.AddReg("Nuevo grupo/Nueva Key", myReg)
If IsNothing(resReg) Then
MsgBox("Error al crear el registro.", "Error!!", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
Else
MsgBox("Esta key no existe.", "Error!!", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End Sub
' la función que nos devuelve si hay un error de lectura o escritura de JBin
Private Sub JBIN_Error(Sender As Object, e As RegFileOnErrorEventArgs)
MsgBox(e.Message)
End Sub
End class
Ejemplo en C#
using System.IO;
using JBin;
public partial class Form1 : Form
{
// Declarar RegFile
RegFile regFile;
private void Form1_Load(object sender, EventArgs e)
{
// Instanciar la clase
regFile = new RegFile();
// Crear el lanzador de eventos para derectar errores
regFile.OnError += onError;
// Crear mis credenciales para poder modificar y crear en mi key que voy a proteger con clave para que otros usuarios no puedan modificarla.
regFile.Credentials = new RegFileCredentials("myPass");
// Inicar RegFile en modo local.
regFile.Start();
// Añadir una key a la key de ASR con clave para que sólo yo pueda modificarla.
Key rn = new Key();
rn.Name = "My Business";
rn.Privileges = RegFilePrivileges.ReadOnly;
rn.Password = "myPass";
Key r = regFile.AddKey("Auto Service RegFile", rn);
if (r == null)
{
MessageBox.Show("Error al crear la key.", "Error!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
// Agregamos un registro
Reg reg = new Reg();
reg.Name = "myRegistro";
reg.Privileges = RegFilePrivileges.ReadWrite;
reg.Password = "Valor del registro";
reg.TypeValue = RegFileTypeReg.REG_STRING;
// Añadir un servicio
RegFileService rf = new RegFileService();
rf.Name = "my service";
rf.DateExecute = (DateTime)"21/12/2021";
rf.Password = "myPass";
rf.Description = "Description service";
rf.Done = false;
rf.EverDay = true;
rf.EvertWeek = false;
rf.RemoveBefore = false;
rf.Privileges = RegFilePrivileges.ReadOnly;
rf.Program = "c:\myprogram.exe"; // o por emjemplo 'notepad.exe', o cualquier programa que queramos, si no está en el 'Path', debemos escribir la ruta completa al archivo ejecutable.
rf.Param = """arg1""" """arg2"""; // Cadena de texto entre comillas separadas por un espacio
if (Program.regFile.AddService("Auto Service RegFile/My Business", rf) != null)
{
MessageBox.Show("Service Created!.", "Ok", MessageBoxButtons.OK, MessageBoxIcon.Information)
}
else
{
MessageBox.Show("Service Failed!.", "Error!!", MessageBoxButtons.OK, MessageBoxIcon.Error)
return;
}
// Para que los cambios en el archivo 'asr.TxJbin', surtan efecto, debemos reiniciar la aplicación de ASR. Con el siguiente código, podemos reinicarlo sin tener que hacer desde el browser.
// Importante: la key 'Auto Service RegFile' tiene un registro de sistema llamado 'PathASR', en la instalación estará vacio, ahí debes indicar la ruta completa y el nombre del archivo de ASR para poder usar este código, o para el menú ASR que hay en el programa FileReg Edit.
string prg = regFile.GetValue("Auto Service RegFile", "PathASR").ToString();
Process[] pr;
pr = Process.GetProcessesByName("Auto Service RegFile");
foreach (Process item in pr) // todos los ASR que se estén ejecutando serán cerrados. Normalmente sólo debe haber uno.
{
item.Kill();
}
Process.Start(prg); // Se pone en marcha de nuevo, si ya está en el menu start de tu sistema operativo, la proxima vez que reinicies se volverá a ejecutar automáticamente.
MessageBox.Show("ASR Reboot Completed");
}
// Evento que se dispara cuando se produce un error controlado.
private void onError(Object sender, RegFileOnErrorEventArgs e)
{
MessageBox.Show(e.Message, "Error!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
Comentarios
Puedes usar ASR para ejeccutar cualquier programa que tengas instalado en tu máquina, incluyendo tus propios programas.
El servicio de ASR es una potente herramienta para recordatorios, agendas, avisos, etc.
Puedes crear un programa con JBin que realice una copia de seguridad de una base de datos SQL Server, y con ASR hacer que una vez a la semana, o cada día, haga la copia de seguridad y almacene el archivo en tu disco duro.
|