Página 1 de 1

Deshabilitar copiar/pegar en una carpeta

Publicado: 24 Jun 2010, 19:22
por damni7
Hola,

Tengo un amigo que esta en el negocio de los cybers y yo le proporciono la instalacion, mantenimiento de las pcs; asi como, soluciones de software conforme las necesidades lo requieran. Lo que quiero saber si es posible con Autoit bloquear y/o deshabilitar el copiar/pegar los archivos y/o carpetas que se encuentran dentro de otra carpeta para evitar el abuso de los archivos y programas.

En un principio se usaba las directivas de seguridad de windows, pero solo creaba mas problemas con las restricciones, sin mencionar, que los usuarios violaban dichas restricciones. Lo mismo sucedia con los programas de terceros.

Gracias anticipadas.

Re: Deshabilitar copiar/pegar en una carpeta

Publicado: 25 Jun 2010, 19:07
por Jonny
Hola

Eso, podrías hacerlo sin problema con la gestión de permisos de Widnows.

Configuras los permisos para usuarios que no tengan privilegios de administrador, de forma que por ejemplo solo puedan leer archivos, o leer y escribir en ellos, pero nada más.

Imagino, que al ser un cyber, los usuarios no accederán a los ordenadores con cuentas de administrador, por lo que no tendría que poder cambiar esta configuración.

Salu2!

Re: Deshabilitar copiar/pegar en una carpeta

Publicado: 26 Jun 2010, 01:14
por damni7
Gracias por la respuesta Jonny. Pero como dije cuando expuse mi inquietud, inicialmente, se usaron las herramientas administrativas de windows; pero, las mismas generaron problemas con los juegos que se instalan en dichas pc (varios de juegos no arracaban en cuentas limitadas).

Re: Deshabilitar copiar/pegar en una carpeta

Publicado: 26 Jun 2010, 12:11
por Jonny
Hola

Cierto.

Algunos programas pueden dar problemas con las restricciones de permisos.

Supongo, que deshabilitar u ocultar las opciones copiar, cortar y pegar, a menos que haya alguna función en alguna UDF de autoit, debe ser complicado (si esque se puede), porque habría que hacerlo tirando de apis.

de todas formas, no es muy complicado impedir que un archivo o directorio sea copiado. Basta usar las funciones ClipGet y ClipPut() para ello.

Te he hecho un pequeño código que impide que un archivo o directorio sea copiado.

Es bastante simple, pues comprueba si hay un archivo o directorio en el portapapeles y lo elimina, para que no pueda pegarse ni fuera del directorio donde está, ni en el mismo.
Fíjate, que no podrás copiar archivos ni directorios, pero sí texto como:
"Hola, estoy haciendo una prueba de las funciones Clip() de AutoIt".
Por supuesto, deberías implementar un poco de control de errores.
Por ejemplo, comprobar con @Error, si se pudo acceder al portapapeles (valores 3 y 4), si el contenido del porta papeles es una entrada textual...

Código: Seleccionar todo

#Include <Misc.au3>

_Singleton("CTRLClipBoard", 0)
HotkeySet("{esc}", "ExitFunction") ;Pulsar Escape para terminar el programa (quitar para la implementación real).

While 1
$_ClipGet=ClipGet()
If FileExists($_ClipGet) Then
ClipPut("")
EndIf
Wend

Func ExitFunction()
Msgbox(0, "", "Control del portapapeles liverado.")
Exit
EndFunc
El código impide que se copien cualquier archivo y directorio del equipo. Si quieres que únicamente no se puedan copiar algunos archivos y/o directorios concretos, deberás elaborar un poco más el código.

Este método, tiene una pega, y es qué, podría evitarse muy fácilmente.

El programa, debería ejecutarse siempre, desde que se enciende el pc, hasta que se apaga, pero, siempre puede matarse el proceso desde el administrador de tareas y podrían copiarse tranquilamente los archivos y directorios que se quisieran.

Esto podrías arreglarlo, haciendo que se ejecutara como un proceso del sistema, tal como hacen por ejemplo los antivirus, pero no se como se hará esto.
ví hace tiempo una librería llamada "Services.au3" por el foro inglés de AutoIt, que posiblemente sirva...

En todo caso, a ver si alguien sabe hacerlo y nos lo dice.

Espero que te sirva.

Salu2!

Re: Deshabilitar copiar/pegar en una carpeta

Publicado: 28 Jun 2010, 03:53
por damni7
Gracias Jonny por tu ayuda y tiempo. Lamenteblemente, tengo problemas con la pc desde hace un par de dias (parece ser la placa :smt013 ).
Ya pruebo tu codigo y comento.
Gracias una vez mas

Salu2

Re: Deshabilitar copiar/pegar en una carpeta

Publicado: 28 Jun 2010, 08:38
por Ximorro
Está curioso el código ese, me ha gustado, pero como decís hecha la ley hecha la trampa, por ejemplo eso no evita poder copiar o mover arrastrando archivos desde los exploradores, eso no pasa por el portapapeles.

Habría que arreglar algún de problemilla:
.- Hay que poner un Sleep dentro del While, de lo contrario se come la CPU...
.- No mira exactamente ficheros, sino nombres, así que si copio el texto del nombre de un archivo válido también lo elimina. Además de ver ese nombre habría que mirar el tipo de objeto que contiene el portapapeles y asegurarse de que es un archivo.
.- "liberado" es con "b" :smt003

¿Qué queréis impedir exactamente? ¿que no puedan sacar/meter archivos del ordenador? en ese caso igual inhabilitando algunas unidades, usb, etc...
Pero si es algo más general será bastante difícil, tendréis que ir pensando qué maneras hay de copiar archivos para impedirlo, ampliando ese programita que os ha puesto Jonny y ocultándolo para que no maten el proceso (quizás poniéndolo como servicio, o poniéndole un nombre rarito y ya está).

Por ahora se me ocurre:
.- Arrastras de un explorador a otro, con esto puedo copiar o mover. ¿No se puede abrir un explorador? Pues abro dos diálogos "Abrir" de dos Notepad, por ejemplo.
.- Zipear los archivos que quiero copiar y descomprimirlos donde los quiero poner. Con eso ya los copio, además si puedo borrar los originales es como si los moviera.

Y habrá más...

Re: Deshabilitar copiar/pegar en una carpeta

Publicado: 28 Jun 2010, 10:23
por Jonny
Hola

Buena observación, la de "liverar"....

Efectivamente, hecha la ley, hechas muchas trampas. Como dije, es un código muy básico, para que se hiciera una idea de como hacerlo sin inhabilitar las opciones copiar/cortar/pegar, que también tendrían sus trampas.

Como decía, debería implementar un poco de control de errores y ampliar el monitoreo del portapapeles.

Según la ayuda de ClipGet(), ajusta @Error a 2, si es una entrada no textual.
NO se bien a que se referirá esto, pero entiendo que debe querer decir, que indicará si lo que hay en el portapapeles es texto o programa (aunque la función devuelva la ruta y nombre del archivo). Pero como digo, no estoy del todo seguro de esto.
Si es así, solo hay que comprobar el valor de @Error, para borrar el contenido del portapapeles si realmente es un archivo o directorio.

Lo de arrastrar archivos, se me ocurrió un rato después de haber hecho el código, pero sigo pensando (aunque tengo una ligera idea) en como impedirlo.
Eso sería más engorroso, pues habría que comprobar la posición del ratón, si se está señalando un archivo, etc etc. Y aún así, quedaría por resolver lo que dices, de por ejemplo comprimir el archivo (aunque, una solución sería impedir la instalación de winzip, rar etc. De hecho, si los usuarios del cyber usan el pc con cuentas limitadas, no tendrían que poder instalar archivos (no deberían hacerlo por la seguridad de otros usuarios y de los equipos).

Lo de la papelera, es cierto que al enviarlo allí lo estás copiando, pero es de fácil solución:

Código: Seleccionar todo

While 1
FileRecycleEmpty() ;Vaciamos la papelera de reciclage de todas las unidades.
Sleep(10)
Wend
No soy muy amigo de poner sleeps en los bucles que han de hacer cosas como esta (impedir una acción del usuario por ejemplo), pues cabe la remota posibilidad (aunque con diez milisegundos no lo creo), de que pilláramos al programa.

En el caso de vaciar la papelera, no creo que se diera el caso, pero en el de capturar el portapapeles, según el sleep que se pusiera sí podría darse el caso, por eso no lo puse...
A mí las veces que probé el código no se me relentizó el ordenador ni ví nada raro... En cualquier caso, puede usarse algo como esto:

Código: Seleccionar todo

DllCall("psapi.dll", "int", "EmptyWorkingSet", "long", -1)
Esto aunque he leído que es una mala práctica, las veces que lo he usado ha hecho que el pc no se relentice en bucles muy tochos...

De todas formas, el hecho de enviar un archivo a la papelera no quiere decir que pueda sacarse de ella con el código que puse (a menos que lo comprimas, arrastres ...)

Por cierto, que yo ejecutaría el programa como un servicio, nunca sabes que pueden llegar a hacer con un ordenador, tanta gente

O eso, o más fácil y seguro:

Código: Seleccionar todo

#include <Misc.au3>
while 1
$dll = DllOpen("user32.dll")

While 1
    sleep (1)
        If _IsPressed("11", $dll) Then
            If _IsPressed("12", $dll) Then
                If _IsPressed("2E", $dll) Then
            ProcessEXISTS("taskmgr.exe")
            ProcessClose("taskmgr.exe")
            ExitLoop
            Endif
            ENDIF
    EndIf
WEnd
DllClose($dll)
Wend
Con esto, nadie abrirá el administrador de tareas, y no se me ocurre otra forma de matar un proceso...

Salu2!

Re: Deshabilitar copiar/pegar en una carpeta

Publicado: 28 Jun 2010, 11:01
por Ximorro
Hum, AutoIT en principio sólo maneja texto en el portapapeles, por eso da error si no es texto, pero esto no quiere decir que sea un archivo, pueden ser muchas cosas, como imágenes (no archivos de imagen, sino bitmaps directamente), sonidos, y en general binarios de varios tipos, además de otros textos en formato html, rtf, etc...
De todas maneras no da error si se copia un archivo, pues lo que hace es devolver su nombre, error está a cero porque lo considera correcto...
Para ir por ese camino, que no es mala idea, es necesario manejar el portapaleles desde la api de Windows, con funciones más completas. Ya viene con AutoIt una extensión para ello: Clipboard.au3. Bastante más complicada de manejar, pero seguro que se puede hacer con eso.
Que conste que aunque estoy poniendo pegas el asunto del clipboard me ha parecido muy ingenioso.

Lo del Sleep es MUY importante, para verlo abre un administrador de tareas y mira la CPU, se pone al 100% si no paras un poco el bucle (o vaya, pone a 100% el núcleo donde se ejecute, si tienes dos núcleos pues tendrás la CPU al 50%). Teniendo en cuenta que es para una sala donde principalmente se juega, es importante no cargar la CPU con algo así.
En fin, es cosa de hacer pruebas para ver que no se escapen copias, pero creo que con un Sleep(30) seguirá funcionando bien.

¿Papelera? yo no he dicho nada de papelera, pero vale :smt002

Estooooooooo, lo del EmptyWorkingSet me parece muy mala práctica si el objetivo es ralentizar un bucle. Para empezar no es buena idea usar algo que no se sabe lo que hace por sus efectos secundarios. Efectivamente ralentiza el bucle, porque está haciendo un trabajo, lo mismo podrías hacer poniendo el programa a factorizar números de 100 cifras. Claro que ralentiza el bucle, ¡porque está currando!. Lo bueno de Sleep es que suspende el proceso durante ese tiempo y el SO planifica otro proceso para ejecución, con lo que no estamos consumiendo recursos (en este caso principalmente CPU).

El tema de la consulta me parece muy complicado, habrá que ir anticipándose a todas las posibilidades que tengan los usuarios para hacer eso que no quieres. Como realmente crear y borrar archivos es imposible de anular en el sistema, habrá que mirar muchas cosas.
Efectivamente que no puedan meter ningún programa desde usb ni nada de eso, pero ¿y desde internet? ¿evitar que no puedan bajar nada? imposible... y no sólo es el zip o rar, también cualquier compresor menos conocido, cualquier programa de gestión de archivos, ventanas de consola (para que no se puedan hacer COPY/MOVE)...
La cosa será restringir el máximo posible con las directivas del sistema, de tal manera que sigan funcionando los juegos, a partir de ahí, a capar por programación...

La otra es tener instalación básica en backup, y todos los días, o cuando haya problemas a restaurar.
Igual se puede hacer más fácil con máquinas virtuales...

Re: Deshabilitar copiar/pegar en una carpeta

Publicado: 28 Jun 2010, 12:46
por Jonny
Hola

Efectivamente, sería más adecuado usar Clipboard.au3. La estuve mirando por encima, antes de hacer el código que posteé, pero ... nunca la he usado, y sí, es un poco más complicada de manejar que ClipGet() y ClipPut(), pero seguro que con apis se puede hacer algo más efectivo.

Hablaba de la papelera al decir:
además si puedo borrar los originales es como
si los moviera.
Entiendo, que al borrar un archivo este va a la papelera (aunque ahora que recuerdo, ví un truco por ahí de Windows, para hacer que el archivo no pasara por la papelera)...

Creo, que debería especificar un poco más, que pretende exactamente. Si solo que no se puedan copiar algunos archivos, todos en general, si no quiere que se puedan copiar en unidades extraíbles...
Si es absolutamente genérico, va a ser muymuymuy complicado... Lo de la línea de comandos no se me había ocurrido, no se si con copy los archivos o directorios pasarían por el portapapeles.
sigo diciendo como al principio, que me parece más sencillo aplicar una buena política de gestión de permisos... quizá no se pueda hacer todo con los permisos, pero sí debería hacerse la gran mayoría. No he tocado mucho el tema de permisos, pero juraría haber leído que pueden aplicarse excepciones, que valdría para esos juegos que dan problemas con restricciones de permisos.

Salu2!

Re: Deshabilitar copiar/pegar en una carpeta

Publicado: 28 Jun 2010, 13:59
por Chefito
Jejejeje....ya veo que habeis tratado estado este tema a fondo :smt003 . Yo no participé porque lo que se pide no me parece producente. Estas cosas hay que hacerlas con usuarios restringidos o con máquinas virtuales, que cuando se apaga se borra todo lo hecho (lo ví hace muuuuuuuuuccchhooooooooo tiempo en un ciber).
Muy buena idea lo del portapapeles, pero si por cuasualidad se soluciona este tema, quedan muchas formas fáciles para copiar.
Yo pensé el quitar en el menu contextual del windows las opciones de copiar y pegar (registro). Hay incluso programas gratuítos para esto (Ejemplo File Menu Tools), pero también se puede tocar el registro con programación, como todos sabemos :smt001 .
Pero es una tontería calentarse la cabeza. Porque pensé igual que Ximorro lo de que podrían copiar archivos y carpetas con comandos de consola o con cualquier programa :smt021 . Y pienso que evitar eso debe de ser muy muy dificil.

Y aunque lograses solucionarlo todo, aun tendrías que aplicar algunas restrinciones al usuario para que no se viese el administrador de tareas y demás cosas de administrador.

O sease, un trabajo casi imposible.

Saludos.

Re: Deshabilitar copiar/pegar en una carpeta

Publicado: 28 Jun 2010, 16:02
por Jonny
Hola

Estoy de acuerdo con vosotros en que es demasiado trabajo, que se puede solucionar fácilmente sin programación, pero ahí dejé el código, por si lo prefiere así, sepa por donde empezar... que no es nada con todos los contras que están saliendo, jeje.

¡Vaya!. Entonces, es más sencillo de lo que parecía, deshabilitar esas funciones del menú contextual (copiar, cortar y pegar). Ni idea, de que se pudiera hacer con el registro...

Lo de la máquina virtual me parece muy buena idea, pero habría que ver, por qué no quiere que se puedan copiar archivos...
porque una máquina virtual no impediría que se movieran archivos ¿no?.

Salu2!

Re: Deshabilitar copiar/pegar en una carpeta

Publicado: 28 Jun 2010, 19:24
por damni7
El objetivo es que no se puedan copiar las carpetas de los juegos instalados a un dispositivo extraible. Osea, lo que se quiere evitar es copiar ciertas rutas de archivos / carpetas.
Respecto a la seguridad del script me encargo yo. Simplemente, se agrega como servicio.
Para evitar las copias por lineas de comando se deshabilita cmd.exe y cualquier archivo .bat.
El SO, en este caso xp, esta configurado para que los archivos eliminados no pasen por la papelera.
Admito que olvide la posibilidad del arrastar archivos / carpeta.

Todas las pcs tienen deep freeze.
Uso de pc virtuales esta descartado.

Deshabilitado drag and drop.

Re: Deshabilitar copiar/pegar en una carpeta

Publicado: 29 Jun 2010, 08:23
por Ximorro
Curiosidad ¿cómo has deshabilitado drag&drop?

¿Se permite sacar otras cosas a dispositivos externos? Si es que no se deshabilitan del todo y ya está.

Si eso se deja habilitado va a ser difícil, por ejemplo se puede comprimir y llevarte el comprimido, por muchos controles que pongas no detectaras eso como una copia del juego... Y se puede inhabilitar el zip, el rar y alguno más, pero hay tantos... a parte de que te puedes hacer uno en Java en un momento.
Y si hablamos también de cosas pequeñas... se las pueden autoenviar por mail, o subirlas a un almacén web.

¿Totalmente descartado los pc virtuales? Porque se me ocurre que se podría tener dos máquinas virtuales en cada PC, uno para navegar y otro para juegos. El de navegar estaría más abierto, pero como en ese disco no están los juegos no pueden acceder a las carpetas para copiarlas.
El de juegos que esté más cerrado, que se entre automáticamente en un menú (¿en Autoit?) en el que puedas seleccionar el juego y a jugar, nada de manosear el sistema de archivos.

Sin máquinas virtuales quizás se podría hacer con un arranque dual. Incluso se puede hacer algo intermedio, supongo que no quieres máquina virtual por el rendimiento en los juegos: para jugar arranque normal, con lo del menú restringido, para navegar máquina virtual (ahí no importa tanto el rendimiento). El caso es que una vez arrancada la virtual no se pueda acceder al ordenador "normal".

En fin, son sugerencias...

Y si no, a monitorizar la unidad de usb (si va a estar siempre en una letra fija será más fácil).
¿Tanto usan unidades usb? Podríais centralizarlo: que en los ordenadores de los clientes esté prohibido, si quieren copiarse cosas que lo pongan en una unidad de red preparada para el efecto, y eso se copia desde el ordenador del controlador o supervisor, o donde esté esa unidad de red. No hay que ver lo que se copia cada uno, puede ser privado, pero así sí se puede ver si están copiándose un juego... a lo mejor.

Re: Deshabilitar copiar/pegar en una carpeta

Publicado: 29 Jun 2010, 11:16
por Jonny
Hola

Puf, no se si ahora, es más complicado que antes...

En ese caso, de querer impedir únicamente que se copien ciertos archivos y/o directorios y no todos, sí que creo que la mejor solución es monitorear el portapapeles, porque monitorear todos los discos duros, pen-drives, mp3, etc etc que puedan conectarse al ordenador... te va a dar bastantes dolores de cabeza.

en cualquier caso, si optas por esto último, en:

http://www.emesn.com/autoitforum/viewto ... f=3&t=2190

tienes este link:

http://www.autoitscript.com/forum/index ... ntry665010
que puso Chefito. Ahí tienes varios códigos que pueden servirte. Tendrías que hacer una especie de buscador, para detectar si existe algún directorio o archivo concreto en las unidades extraíbles encontradas.
De todas formas, te recomiendo la primera opción (monitorear el portapapeles) , porque siempre será más sencillo. El código que te puse, te puede servir modificándolo un poco y usando la UDF Clipboard.au3, para detectar si realmente se está copiando un archivo, o un texto con el nombre de un archivo como
"C:\Archivos de programa\Juego\Startgame.exe"
que con el código que te hice, no se copiaría, si existiese un archivo con ese nombre.

Se me está ocurriendo una chapucilla para impedir el comprimir archivos o carpetas.
También monitoreando el portapapeles, pero tirando de expresiones regulares (por ejemplo).

Como no sabemos en qué formato van a comprimir el archivo, comprobamos si hay un archivo en el portapapeles. Si lo hay, miramos el nombre quitándole la extensión (para esto no haría falta usar expresiones regulares). Una vez quitada la extensión, sí podríamos aplicar una regla al nombre, para ver si coincide con el de un directorio o archivo que no queramos que se copie, o coincide con alguna variación en el mismo.

Por supuesto, sería muy fácil saltarse esta protección. Tanto, como comprimir con un nombre totalmente distinto, pero esque esto no creo que pueda solucionarse al cien por cien... Me recuerda a la eterna lucha que tienen algunos, por intentar impedir que se vea el código fuente de sus páginas... Siempre hay una forma de impedirlo, pero otra de evitarla.

Así pues, habrán mil formas de hacerlo más difícil (con todas las que han salido por aquí solo usuarios con buenos conocimientos y muchas ganas de copiar archivos de un juego, que por otro lado no se para que iban a querer), lo conseguirían, pero nunca será cien por cien imposible.

Salu2!

Re: Deshabilitar copiar/pegar en una carpeta

Publicado: 29 Jun 2010, 20:10
por damni7
Drag and drop sigue habilitado. Habia modificado registros pero al final se deshacen los cambios.

Al inicio aplique mayores restricciones a las pcs (por ejemplo, descargas, acceso a los usb, limite de pestañas para los exploradores y mas), pero a uno de los dueños no le agrado la idea porque los usuarios se quejaban de las mismas.

Efectivamente, el uso de pc virtuales ralentiza el desempeño de los juego; ademas, de los tiempos muertos que tendrian los clientes. Recuerda, que los clientes en un ciber quieren rapidez en la atencion y las pcs; ademas, la gran mayoria son usurios muy basicos.

El uso de los usb es bien alto y las unidades no son fijas. Los usuario suelen guardar los avances de sus juegos, trabajos y archivos diversos.

En cuanto a la comprension de archivos, la cosa se ve mas dificil, pero se pordria manejar con ventanas.
Me parece que nos olvidamos de un pequeño detalle, como evitar el cambio de nombre? :smt017

Ayer se me ocurrieron un par de cosas. Una de ellas es deshabilitar CTRL + C (X) del teclado mientras de navege por la carpeta que se desea proteger:

Código: Seleccionar todo

While 1
	If WinExists ("D:\Nueva carpeta", "") Then
		myfunc()
		EndIf
WEnd
Func myfunc()
	HotKeySet ("^c", "myfunc")
EndFunc
Se que hotkeyset no funciona estando dentro de una funcion, lo cual es el gran problema, pero la pongo de esa manera para que se entienda la idea.

Y la otra idea, complementaria a la primera, es con la idea de Jonny:

Código: Seleccionar todo

#Include <Misc.au3>

$bak = ClipGet()

while 1
	$bak = ClipGet()
	If $bak = ("D:\Nueva carpeta") Then
	_Close ()
	EndIf
	Sleep (100)
WEnd

Func _Close ()
	ClipPut ("")
EndFunc
Esta de aca funciona perfectamente a ser por el gran detalle de como indicarle al script todos los archivos a proteger... alguna idea??? Si bien es cierto funciona para archivos y carpetas, tiene la limitacion de que si solo se quiere copiar un archivo que esta dentro de una carpeta (solo restringi la carpeta, mas no cada archivo dentro de ella) salta la proteccion.

En cuanto al uso de el UDF Clipboard.au3, la verdad, que lo veo bien dificil. No soy muy experto con AutoIt :smt010

Jonny podrias decirnos que se te ocurre para evitar la comprension de archivos.

Salu2

Re: Deshabilitar copiar/pegar en una carpeta

Publicado: 30 Jun 2010, 11:24
por Jonny
Hola

¿Decirle al script todos los archivos y carpetas que se quieren proteger? Tendrás que comprobarlo uno por uno, con Switch o Select por ejemplo, aunque, otra forma que para mi gusto estaría mejor, sería con un archivo, donde se pusieran todos los directorios y carpetas, cada uno en una línea, así, solo tendrías que comprobar si el archivo/Carpeta que hay en el portapapeles existe en el archivo. Por supuesto, tendrías que proteger muy bien ese archivo, para que no llegara a ser borrado ni manipulado, y encriptar el contenido, para que no se pudiera leer... Como seguro, es más seguro especificarlo directamente en el programa.

¿Evitar que se compriman archivos y/o directorios?

Ya puse ayer una posible manera. Tirar de expresiones regulares, para comprobar si existe un archivo bien en el portapapeles o bien en cualquier unidad usb, con el mismo nombre que el que se quiere proteger, o parecido... Puedes currarte una buena regla para comprobar si se ha hecho una modificación muy exagerada, pero por supuesto no será cien por cien efectivo, porque no hay forma de saber si realmente se está comprimiendo un archivo. Recuerda, que nos estamos basando en algo muy poco fiable para este fin, como nombres y rutas de archivos.

Si el archivo que quieres proteger se llama Juan.exe y yo lo comprimo como Ramón.rar.... De poco te va a servir hacer la mejor regla para comprobar que le he cambiado el nombre. Como dije, eso solo hará un poco más dificil el hecho de copiar los archivos y directorios que quieras proteger, pero no imposible.

Se me ocurre una forma, extremadamente complicada (almenos para mí) y que tampoco se si sería posible (tendría que serlo)

En vez de complicarse tantísimo,monitoreando el portapapeles, etc etc, quizá sería mejor comparar internamente los archivos...

eso, quizá se haga en AutoIt con las funciones bit(), pero no se como de efectivo podría resultar, almenos con archivos muy pesados. Lo que es seguro, que sería bastante más efectivo, pues no tendrías que preocuparte de evitar tantas cosas, que al fin y al cabo tampoco queda muy bien un ordenador tan capao, en un sitio como un cyber....
De esta manera, daría igual por ejemplo como dices, si se le cambia el nombre al archivo original en su hubicación de origen antes de intentar sacarlo de ella (que por cierto, podrías evitarlo con los mismos permisos de Windows, y no afectaría al funcionamiento de los juegos) porque lo que se haría sería comparar los archivos, no el nombre de estos.

Eso sí, eso implicaría tener que controlar cada dispositivo que se conecte a los puertos usb del ordenador, comprobar cada archivo y directorio de cada uno de ellos....
Lo digo, porque no se si eso sería muy eficiente.

Y no se si de esta manera (quizá sí), se podría controlar también que no se hubieran comprimido ningún archivo...

Quedaría controlar otra forma que dijo Ximorro: Sacar los archivos vía internet: E-mail, uploading, Messenger... Pero eso es otra historia, tanto o más difícil que esta..
- Una pista : Se podría empezar por instalar un snifer, para controlar el tráfico saliente del ordenador, y si se consigue detectar que se están sacando archivos protegidos del pc, impedirlo (Falta ver como), que si se resuelve todo lo anterior .... podríamos mirar de solucionar.

Salu2!