hola estoy tratando de crear un archivo similar a este
http://www.mediafire.com/download/qyors7vpzr9atju/flamer.rar
(http://www.mediafire.com/download/qyors7vpzr9atju/flamer.rar)
es la foto de flamer le he borrado la extensión y lo remplace por puntos y cuando la descomprimen se crea el archivo flamer.....
y mi pregunta es como logro hacer el archivo flamer...... sin nesesidad del winrar y en un lenguaje de programación
intente esto en vb.net
FileCopy("e:\flamer.jpg", "e:\flamer....")
pero nada
saludos
Cita de: Flamer en 12 Septiembre 2016, 02:59 AMcuando la descomprimen se crea el archivo flamer.....
Cuando se descomprime el archivo, el sistema operativo automaticamente le asigna el nombre de archivo "
flamer" sin extensión (al menos en Windows 10), puesto que lo que pretendes hacer es una operación ilegal (en términos de nomenclaturas ilegales de archivos). El punto al final del nombre es el caracter que delimita el nombre de archivo de la extensión del archivo (logicamente), una extensión de archivo no puede contener un punto, o al menos no debería permitirse, como norma general.
No puedes hacer eso con .NET, al menos no usando código administrado, puesto que el algoritmo de la función de renombrado debería prevenir que lleves a cabo esa operación ilegal en el sistema de archivos de Windows.
Sin embargo, al parecer la API de Windows ignora algunas validaciones para crear estos archivos, puedes usar la sigueinte sintaxis "
\\?\C:\Flamer..." por ejemplo al llamar a la función
CreateFileA/
CreateFileW:
<DllImport("kernel32.dll", CharSet:=CharSet.Auto, BestFitMapping:=False, ThrowOnUnmappableChar:=True, SetLastError:=True)>
Public Shared Function CreateFile(<MarshalAs(UnmanagedType.LPTStr)> ByVal filename As String,
<MarshalAs(UnmanagedType.U4)> ByVal access As FileAccess,
<MarshalAs(UnmanagedType.U4)> ByVal share As FileShare,
<MarshalAs(UnmanagedType.SysInt)> ByVal securityAttributes As IntPtr,
<MarshalAs(UnmanagedType.U4)> ByVal creationDisposition As FileMode,
<MarshalAs(UnmanagedType.U4)> ByVal flagsAndAttributes As FileAttributes,
<MarshalAs(UnmanagedType.SysInt)> ByVal templateFile As IntPtr
) As SafeFileHandle
End Function
Dim handle As SafeFileHandle =
CreateFile("\\?\C:\Flamer...", FileAccess.Write, FileShare.None, IntPtr.Zero, FileMode.CreateNew, FileAttributes.Normal, IntPtr.Zero)
No he comprobado a hacer esto con el resto de funciones Win32
MoveFile/
MoveFileEx/
CopyFile/
CopyFileEx pero supongo que deberían permitir usar la misma sintaxis en los parámetros que tomen el nombre de archivo.
PD: No hace falta mencionar que el archivo será "irreconocible" por el Explorador de Windows o mejor dicho inborrable, y para borrarlo deberemos utilizar la misma sintaxis al especificar el nombre de archivo a borrar.
Saludos
yo lo puedo crear con winrar y borrar con el
para borrarlo del disco hago lo siguiente
E:\>rar m "prueba.rar" flamer...........
RAR 5.21 Copyright (c) 1993-2015 Alexander Roshal 15 Feb 2015
Trial version Type RAR -? for help
Evaluation copy. Please register.
Creating archive prueba.rar
Adding flamer........... OK
Deleting flamer........... deleted
Done
E:\>
y adentro del rar le devuelvo la extensión
pero lo que quiero saber es como lo crea y lo borra el winrar
saludos flamer y si es inborrable
Cita de: Flamer en 12 Septiembre 2016, 05:57 AMpero lo que quiero saber es como lo crea y lo borra el winrar
Flamer, ¿
has leido mi respuesta?, ahí te explico como, usando la sintaxis especial al llamar a la función
CreateFile para crear el archivo y obtener el
open-handle del archivo con el que luego escribir los datos en el stream (supongo), y para borrar el archivo llamando a
DeleteFile usando en la sintaxis el prefijo especial que ya he mencionado ("
\\?\"), la clave está en utilizar esa sintaxis en el parámetro de la función, de lo contrario las funciones mencionadas no reconocerían el archivo especificado.
Cita de: Flamery mi pregunta es como logro hacer el archivo flamer...... sin nesesidad del winrar y en un lenguaje de programación
Eso también ha quedado explicado, debes usar las funciones de la API de windows en lugar de utilizar las funciones built-in de la libreria de classes de .NET Framework, puesto que tienen métodos de validación que no te permitirán crear archivos que empiecen o acaben con un punto (ni utilizando la sintaxis especial).
Saludos...
Cita de: Eleкtro en 12 Septiembre 2016, 06:18 AM
Flamer, ¿has leido mi respuesta?, ahí te explico como, usando la sintaxis especial
Hola Elecktro perdón es que modificaste el mensaje y no me fije bien jajaja
no es necesaria la api funciona desde el ms-dos con el comando ren y el copy
asi
E:\>copy /b flamer.png \\?\E:\Flamer...
1 archivo(s) copiado(s).
E:\>ren "\\?\E:\Flamer..." "Flamer2.png"
saludos flamer y gracias