Autor
|
Tema: Crear copia de seguridad (Leído 3,078 veces)
|
jrhomer
|
Hola foro...
intento hacer una pequeña aplicación para que me haga una copia de seguridad de una archivo en concreto (ese aechivo es un mdb) que uso con otra aplicación.
no tendría problemas si hago la copia cuando estoy trabajando con la aplicación principal... pero implicaría que siempre que quiera hacer una copia debería ejecutar esa aplicación.
Lo que me gustaria hacer es un procedimiento automático para que caba vez que se inicia el PC se ejecute ese procedimiento y se realice la copia de seguridad.
Por ejemplo que todos los días a las 12:00 me haga esa copia.
Para hacer esto es para lo que tengo problemas...
me podeis echar una mano??? y guiarme para ver por donde van los tiros?
un saludo.
|
|
|
En línea
|
ups!!
|
|
|
Gorky
|
Creo que te puedo dar la solucion.
Para que se te ejecute en el inicio vas a escribir en la entrada de registro "HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\run". Esto lo puedes hacer con la API RegSetValueEx.
Para que sea a una hora en concreto lo vas a hacer con la API GetSystemTime y comparando el valor que te devuelve con la hora que tu quieras.
Creo que con eso tienes el problema solucionado.
Si tienes alguna duda al respecto pregunta.
|
|
|
En línea
|
|
|
|
jrhomer
|
Muchas gracias Gorky, probaré con la API.
Voy a buscar información sobre esas funciones y lo pruebo.
|
|
|
En línea
|
ups!!
|
|
|
jrhomer
|
Es la primera vez que trabajo con esto del registro..... no comprendo como tengo que usar RegSetValueEx y GetSystemTime...
podrias ponerme un ejemplo de como hacerlo? y donde tengo que hacerlo? ya que si lo hago en mi aplicación... si no la ajecuto no se creará la copia de seguridad....
perdona, pero ando bastante perdido en este tema.
|
|
|
En línea
|
ups!!
|
|
|
Gorky
|
Bajate esto y te informas: http://www.allapi.net/downloads/apiguide/agsetup.exeSi despues sigues teniendo dudas vuelves a preguntar. PD.: Entre una respuesta tuya y otra hay muy poco tiempo y dudo mucho que te haya dado tiempo a poder investigar. Es lo primero que deberias ponerte a hacer.
|
|
|
En línea
|
|
|
|
CeLaYa
Desconectado
Mensajes: 543
|
mira yo tengo algo parecido, solo que uso una base de datos del SQL
'Apis '================================== Public Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
'PROCESOS Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Public Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long 'PAUSA Public Declare Function GetTickCount Lib "Kernel32.dll" () As Long
Public Const STILL_ACTIVE = &H103 Public Const PROCESS_QUERY_INFORMATION = &H400
Private Sub cmdRespaldo_Click() 'Determinar el nombre de la base de datos Dim b As Long, strPath As String * 255 Dim Archivo As String On Local Error Resume Next b = GetShortPathName(fbDir.Text, strPath, Len(strPath)) strPath = Left$(strPath, b) If Trim(strPath) = "" Then MsgBox "Directorio no valido", vbCritical + vbOKOnly, App.EXEName Exit Sub End If GetAttr (Trim(strPath) & "Respaldo" & Format(Date, "ddMMyyyy") & ".zip") If Err.Number = 0 Then b = MsgBox("¿El archivo de respaldo ya existe, desea sobreescribirlo?", vbQuestion + vbYesNoCancel, App.EXEName) Select Case b Case 6 ' Si Archivo = Trim(strPath) & "Respaldo" & Format(Date, "ddMMyyyy") Case 7 ' No Archivo = InputBox("Teclee el nombre del archivo de respaldo (sin extensión).", "Crear Respaldo", "") If Trim(Archivo) = "" Then Exit Sub Else Archivo = Trim(strPath) & Archivo End If Case 2 ' Cancelar Exit Sub End Select Else Archivo = Trim(strPath) & "Respaldo" & Format(Date, "ddMMyyyy") End If 'Exit Sub If AbrirBD(Acceso.LecturaEscritura) <> 0 Then Exit Sub 'Crear respaldo de la base de datos On Local Error Resume Next lblProgres.Caption = "Creando copia de seguridad..." ProgressBar1.Value = 1 DoEvents BD.Execute "BACKUP DATABASE [Indicadores] TO DISK = N'" & Archivo & ".bak ' " & _ "WITH NOINIT, NOUNLOAD, NAME = N'Respaldo" & Format(Date, "ddMMyyyy") & "', " & _ "NOSKIP, STATS = 10, DESCRIPTION = N'Respaldo', NOFORMAT" DoEvents If Err Then MsgBox BD.Errors(0).Number & vbCrLf & BD.Errors(0).Description, vbCritical + vbOKOnly, App.EXEName Else ' Coomprimir la base de datos .bak lblProgres.Caption = "Comprimiendo archivo..." ProgressBar1.Value = 2 DoEvents 'Ejecuta el comando MSDOS ExeEspera "c:\archiv~1\winzip\winzip32.exe -a -r " & Archivo & ".zip " & Archivo & ".bak" lblProgres.Caption = "Borrando archivos temporales..." ProgressBar1.Value = 3 DoEvents Kill Archivo & ".bak" lblProgres.Caption = "Proceso terminado" ProgressBar1.Value = 4 DoEvents End If On Local Error GoTo 0 CerrarBD End Sub
Private Function ExeEspera(COMANDO As String) Dim hProcess As Long Dim RetVal As Long hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(COMANDO, vbMinimizedNoFocus)) Do GetExitCodeProcess hProcess, RetVal DoEvents Pausa 100 Loop While RetVal = STILL_ACTIVE End Function
|
|
|
En línea
|
"La soledad es el elemento de los grandes talentos". Cristina de Suecia (1626-1689) Reina de Suecia.
|
|
|
jrhomer
|
Sigo liado con esto y no consigo sacar nada en claro, podrias ponerme un ejemplo de como hacerlo? y donde tengo que hacerlo? ya que si lo hago en mi aplicación... si no la ajecuto no se creará la copia de seguridad....
ando algo perdido en esto
|
|
|
En línea
|
ups!!
|
|
|
CeLaYa
Desconectado
Mensajes: 543
|
y es muy necesario que lo tengas que programar??. porque no lo haces desde el programador de tareas del Windows?
|
|
|
En línea
|
"La soledad es el elemento de los grandes talentos". Cristina de Suecia (1626-1689) Reina de Suecia.
|
|
|
jrhomer
|
y es muy necesario que lo tengas que programar??. porque no lo haces desde el programador de tareas del Windows?
está deberá ser la solución, ya que no consigo controlar que me me propuso Gorky.
|
|
|
En línea
|
ups!!
|
|
|
Gorky
|
y es muy necesario que lo tengas que programar??. porque no lo haces desde el programador de tareas del Windows?
está deberá ser la solución, ya que no consigo controlar que me me propuso Gorky. Venga te lo facilito un poco. Esto lo tienes que colocar en la cabecera, antes de Option Explicit: Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long Private Declare Sub GetSystemTime Lib "kernel32" Alias "GetSystemTime" (lpSystemTime As SYSTEMTIME) Private Const HKEY_LOCAL_MACHINE = &H80000002
Y esto en el cuerpo: Dim h As Long Dim buffer As String RegOpenKey HKEY_LOCAL_MACHINE, "software\microsoft\windows\currentversion\run", h RegSetValueEx h, "nombre_de_la_entrada", 0, 1, ByVal "C:\WINDOWS\system32\programa.exe", Len("C:\WINDOWS\system32\programa.exe") RegCloseKey h Con eso haces que se te ejecute en cada inicio. Private Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type Dim MyTime As Tiempo GetLocalTime Tiempo If Tiempo.wDay = 12 And Tiempo.wMinute = 0 Then FileCopy App.Path & "\" & App.EXEName & ".exe", "C:\WINDOWS\system32\programa.exe" End If Y con eso haces que a las doce se te copie en la ruta que le hayas dicho. Ya por co***es tienes que saber hacerlo. De todas formas si no lo consigues pregunta de nuevo.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Mini-Tutorial: Crear copia de seguridad sin esfuerzo, y en cuestión de segundos.
Tutoriales - Documentación
|
SuperDraco
|
9
|
27,015
|
20 Julio 2013, 20:37 pm
por domin05
|
|
|
Me Ayudan a crear una copia de seguridad Netbook
Windows
|
WIитX
|
8
|
4,478
|
28 Agosto 2012, 21:34 pm
por WIитX
|
|
|
Crear copia para clonar en varios PCs?
GNU/Linux
|
JJMD
|
1
|
2,287
|
28 Febrero 2013, 23:09 pm
por portaro
|
|
|
Problema al iniciar crear copia de seguridad Ubuntu 14.04 lts
GNU/Linux
|
FranKlr
|
3
|
3,416
|
23 Noviembre 2014, 04:50 am
por Shell Root
|
|
|
como puedo crear una copia de seguridad de mi movil a tiempo real
Dudas Generales
|
rengi46
|
1
|
2,242
|
8 Septiembre 2016, 19:39 pm
por Eleкtro
|
|