hola amigos he intentado de dos forma de copiar un archivo en windows vista y ninguno me funciono alguien podria darme una mano...
esta forma es usando la api
***en el form******
RetO = CopyFileEx(MySelf, drive & "\" & FileName, AddressOf CopiarArchivo, _
ByVal 0&, 0, COPY_FILE_RESTARTABLE)
End If
*****en un modulo********
Option Explicit
'Constantes para el Api CopyFileEx
Public Const COPY_FILE_FAIL_IF_EXISTS = &H1
Public Const COPY_FILE_RESTARTABLE = &H2
'Declaración Api CopyFileEx para copiar archivos con progreso
Public Declare Function CopyFileEx Lib "KERNEL32.DLL" Alias "CopyFileExA" ( _
ByVal lpExistingFileName As String, _
ByVal lpNewFileName As String, _
ByVal lpProgressRoutine As Long, _
lpData As Any, _
ByRef pbCancel As Long, _
ByVal dwCopyFlags As Long) As Long
'función para copiar
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Function CopiarArchivo(ByVal TotalFileSize As Currency, ByVal _
TotalBytesTransferred As Currency, _
ByVal StreamSize As Currency, _
ByVal StreamBytesTransferred As Currency, _
ByVal dwStreamNumber As Long, _
ByVal dwCallbackReason As Long, _
ByVal hSourceFile As Long, _
ByVal hDestinationFile As Long, _
ByVal lpData As Long) As Long
End Function
y luego tambien probe con
FileCopy rutaarchivoorigen, rutaarchivodestino
Y sin resultado en ambos casos :huh:
Existe otra api en vista :huh: para realizar esta operacion
Hola, ese vista es un desastre...pero con el FileCopy de visual te tiene que andar por lo menos...¿¿ pero te tiran error o directamente no hacen nada..?? el codigo que pusiste del form no es todo el codigo...¿¿ te aseguraste de que exista lo que estas copiando??
Si el codigo funciona a la perfeccion cualquiera de los dos en windows xp, pero en vista para tras jeje.. no hace nada directamente y no tira ni error ...bueno espero aver si alguin sabe como se hace en vista :-(
en vista tendrias que escalar privilegios, eso es una de las seguridades que han implementado, pero hay forma, porque hay virus que lo hacen, recuerda que visual basic lo ha hecho microsoft, asi que sabe como bloquear todas las instrucciones para que un exe se copie....
supongo que en otros lenguajes como c++, c se puede hacer...
habria que probar...
yo tambien lo habia intentado, pero no se puede
Pero la solucion que encontre es copiarlo a carpetas no comprometidas, por ejemplo a D:/documentos...
y por alli ocultas el malware....
Saludos!
ok gracias, este tema de vista esta jodido jeje voy a buscar info y si encuentro algo o ago algo intesante lo posteo ;D
Vista tiene una "vulnerabilidad" que mediante un archivo obtienes privilegios.. pero no mee recuerdo como es que era el metodo luego busco! ;)
mmm y si lo creas y escribes en forma binaria es decir:
creas el archivo con la extensión deseada y abres en archivo deseado y lo reescribes
ami jamas me sirvio el copy ni el filecopy ja mmm y nunca intente este q acabo de decir
en codigo algo asi haber si funciona.
Dim buffer As String * 1024 ' 512 bytes
Open "d:\java.hta" For Binary As 1
Open "c:\aa.hta" For Binary As 2
Do While Not EOF(1)
Get 1, , buffer
Seek (2), LOF(2) + 1
Put #2, , buffer
DoEvents
Loop
Close 1
Close 2
P.D.: si te fijas y ejecutas varias veces este codigo sobreescribe el archivo aumentando cada vez su tamaño,.... velo por ti mismo a por cierto la escritura siempre cerrara en kb cerrados jeje xP
Ok gracias voy a buscar = info acerca de los permisos en vista
las cosas se hacen del modo normal si usas a modo de administrador, tal ves se pueda hacer un hook para obtener privilegios...