Es su archivo y su programa el que puede modificarlo. Cuando este es el caso, hay una solución simple. (Si usted puede permitirse el lujo de poner su archivo de registro en una carpeta separada)
Nota: Usted puede tener todos sus archivos de registro colocados en una carpeta separada. Por ejemplo, en mi aplicación, tenemos muchas DLL, cada una con sus propios archivos de registro y, por supuesto, la aplicación propia.
Así que tienen un proceso independiente que se ejecuta en segundo plano y supervisa la carpeta de las notificaciones cambios como
- cambio en el tamaño del archivo
- intento de cambiar el nombre del archivo o carpeta
- eliminar el archivo etc. ...
Según esta notificación, puede certificar si el archivo se ha modificado o no. (A medida que usted y otros pueden estar adivinando, incluso su proceso de & dlls cambiarán estos archivos, que también puede conducir a una notificación. Necesita sincronizar esta acción inteligente. Eso es todo) API
ventana para monitorear carpeta en la que figura a continuación :
HANDLE FindFirstChangeNotification(
LPCTSTR lpPathName,
BOOL bWatchSubtree,
DWORD dwNotifyFilter
);
lpPathName:
Path to the log directory.
bWatchSubtree:
Watch subfolder or not (0 or 1)
dwNotifyFilter:
Filter conditions that satisfy a change notification wait. This parameter can be one or more of the following values.
FILE_NOTIFY_CHANGE_FILE_NAME
FILE_NOTIFY_CHANGE_DIR_NAME
FILE_NOTIFY_CHANGE_SIZE
FILE_NOTIFY_CHANGE_SECURITY
etc...
(Check MSDN)
Cómo hacer que funcione?
sospechoso A: Nuestro proceso
sospechoso X: otro proceso o usuario
Inspector: El proceso que hemos creado para supervisar la carpeta.
Inpector ve un cambio en la carpeta. Consultas con Sospechoso A si hizo algún cambio en él.
si es así,
change is taken as VALID.
si no
clear indication that change is done by *Suspect X*. So NOT VALID!
File is certified to be TAMPERED.
Aparte de eso, a continuación son algunas de las técnicas que pueden (o no :)) ayudarle!
Almacene la marca de tiempo siempre que una aplicación cierre el archivo junto con el tamaño del archivo. La próxima vez que abra el archivo, verifique la última hora modificada de la hora y su tamaño. Si ambos son iguales, significa que el archivo no está alterado.
Cambie el privilegio de archivo a de solo lectura después de escribir registros en él. En algún programa o alguien quiere alterarlo, intentan cambiar la propiedad de solo lectura. Esta acción cambia la fecha/hora modificada para un archivo.
Escriba en su archivo de registro solo los datos cifrados. Si alguien lo manipula, cuando descifremos los datos, es posible que encontremos texto no descifrado correctamente.
Usando comprimir y mecanismo de la ONU a comprimir (comprimir puede ayudar a proteger el archivo con una contraseña)
Cada forma puede tener sus propias ventajas y desventajas. Fortalezca la lógica según su necesidad. Incluso puedes probar la combinación de las técnicas propuestas.
¿Por qué tiene esto la etiqueta "gpgpu"? GPGPU generalmente significa informática de propósito general en unidades de procesamiento gráfico. ¿Es un error tipográfico? –