border

Miembros:
Mensajes:
Temas:
Online:

Ultimo Miembro:

 
 

  #1 (permalink)  
Antiguo 11-07-2005, 16:18:34
Buena Participación en el Foro
 
Registrado: feb 2004
Posts: 80
ss_jesus Valoración +2
Predeterminado Acceso a archivos

Hola a todos los del foro
Me explico un poco intento crear un programa que cuando se abra una carpeta o archivo determinado desde el s.o se ejecute el programa en cuestión supongo que será algo parecido al autorun.inf de los cds pero no se por donde empezar si alguien pudiera arrojar algo de luz a este tema le estaría agradecido


Por que la evolución solo existe si el conocimiento esta al alcance de todos


NOTA.- Corregido el error por el que pides disculpas en el siguiente post...
Responder Con Cita
  #2 (permalink)  
Antiguo 11-07-2005, 16:32:33
Buena Participación en el Foro
 
Registrado: feb 2004
Posts: 80
ss_jesus Valoración +2
Predeterminado Pido perdón por la grañidísima metedura de pata en el titulo

Pido perdón por la grañidísima metedura de pata en el titulo no se lo que me ha pasado
Responder Con Cita
  #3 (permalink)  
Antiguo 11-07-2005, 17:34:43
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.266
acalanto ha deshabilitado la reputación
Predeterminado

En la sección de trucos del foro encontrarás la forma de realizarlo


http://www.vb-mundo.com/verTruco.asp?truco=193
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #4 (permalink)  
Antiguo 14-07-2005, 12:29:01
Buena Participación en el Foro
 
Registrado: feb 2004
Posts: 80
ss_jesus Valoración +2
Predeterminado no entiendo muy bien el funcionamiento

Hola Alcanto
Quería hacerte una pregunta tiene que esta el programa en ejecución para que funcione. Aun así te ruego evalúes el código que dejo a continuación a ver si interpreto bien el ejemplo, que seguro que no porque no consigo hacerle funcionar

'Crea una entrada llamada `MyApp`.
sKeyName = App.Path ('"MyApp")
sKeyValue = App.Path & "\Proyecto1.exe" '"My Application"
ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&)
'Asocia la extensión .BAR a "MyApp".
sKeyName = ".jpg" (.BAR)
sKeyValue = App.Path ( "MyApp")
ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&)
'Establece la ruta de "MyApp".
sKeyName = App.Path (' "MyApp")
sKeyValue = "\padre" ( "c:\mydir\padre %1")
ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
ret& = RegSetValue&(lphKey&, "shell\open\command", REG_SZ, sKeyValue, MAX_PATH)

Lo que esta entre paréntesis es el código que tenia puesto antes de modificarlo yo


Porque la evolución solo existe si el conocimiento esta al alcance de todos
Responder Con Cita
  #5 (permalink)  
Antiguo 14-07-2005, 12:33:36
Buena Participación en el Foro
 
Registrado: feb 2004
Posts: 80
ss_jesus Valoración +2
Predeterminado

Perdón Acalanto, lo siento últimamente ando algo despistado siento las molestias causadas
Responder Con Cita
  #6 (permalink)  
Antiguo 14-07-2005, 13:11:47
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.266
acalanto ha deshabilitado la reputación
Predeterminado

Más o menos sería de esta forma.

Código:
`Crea una entrada llamada Proyecto1.
    sKeyName = "Proyecto1
    sKeyValue = "Aplicación para abrir Jpg"
    ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
    ret& = RegSetValue&(lphKey&, ``, REG_SZ, sKeyValue, 0&)
`Asocia la extensión .JPG a Proyecto1.exe
    sKeyName = ".JPG"
    sKeyValue = "Proyecto1"
    ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
    ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&)
`Establece la ruta de Proyecto1.exe.
    sKeyName = "Proyecto1"
    sKeyValue = "c:\archivos de programa\Proyecto1\Proyecto1.exe"
    ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
    ret& = RegSetValue&(lphKey&, `shell\open\command`, REG_SZ, sKeyValue, MAX_PATH)

o de esta otra si lo creas desde el propio ejecutable de Proyecto1


Código:
`Crea una entrada llamada Proyecto1.
    sKeyName = App.Title
    sKeyValue = App.Title
    ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
    ret& = RegSetValue&(lphKey&, ``, REG_SZ, sKeyValue, 0&)
`Asocia la extensión .JPG a Proyecto1.exe
    sKeyName = ".JPG"
    sKeyValue = App.Title
    ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
    ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&)
`Establece la ruta de Proyecto1.exe.
    sKeyName = App.title
    sKeyValue = App.Path+"\"+app.exename+".exe"
    ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
    ret& = RegSetValue&(lphKey&, `shell\open\command`, REG_SZ, sKeyValue, MAX_PATH)


De todas formas he de decirte que poner en el sistema una aplicación que gestiones imágenes JPG y que además se llama Proyecto1.exe, como mínimo parece un despropósito que creo deberías valorar adecuadamente. Además estoy seguro que el sistema dispone de un editor de imágenes propio de Microsoft que evidentemente, y sin tratar de menospreciar tu aplicación, estará mucho más probado y contendrá muchos más servicios y utilidades.

No sé, piénsatelo un poco antes de hacer algo así.
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #7 (permalink)  
Antiguo 14-07-2005, 15:51:02
Buena Participación en el Foro
 
Registrado: feb 2004
Posts: 80
ss_jesus Valoración +2
Predeterminado

Buenas tardes
Bueno acalanto lo primero que haré será explicarme un poco ya que creo que hablamos de cosas distintas, no busco crear un programa de edición de imágenes sino de protección de archivos de mi programa, en el cual tiene una carpeta donde guarda imágenes necesarias para su funcionamiento y que cambian constantemente según su necesidad, es decir supongamos que tengo un programa que almacena imágenes, estas imágenes las guarda en una carpeta del programa, directamente no son visibles pero si el usuario hace una búsqueda por ejemplo con el explorador de Windows y encuentra estas imágenes y sin darse cuenta que son del programa que esta utilizando las elimina el programa fallaría, o no daría los resultados buscados. No se si me explico bien, bueno la idea es proteger estos archivos de alguna manera y mi idea era que cuando intentase abrir, eliminar o modificar el archivo un mensajito por ejemplo este archivo en concreto se esta utilizando en el programa de procesado de archivos por ejemplo no se si me he explicado con claridad de todas formas muchas gracias por tu atención y espero me puedas ayudar a resolver este pequeño problema que tengo entre manos

Nota: pueden ser imágenes, documentos de texto, etc.


Porque la evolución solo existe si el conocimiento esta al alcance de todos
Responder Con Cita
  #8 (permalink)  
Antiguo 14-07-2005, 16:28:34
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.266
acalanto ha deshabilitado la reputación
Predeterminado

Pues si que te has explicado mal o yo lo he comprendido peor todavía. Me imaginaba que lo que necesitabas era asociar una aplicación a una extensión determinada de archivo y de ahi el contenido de mi respuesta.

Lo que necesitas es más sencillo (aparentemente). Carga la librería Scriplet que te permite manejar el entorno FileSystemObject y con sus métodos puedes cambiar los atributos de los ficheros de esa carpeta.

Si los pones como 'ocultos' y de 'sistema' el propio explorador advertirá que esos ficheros no se deben eliminar.

Si lo que deseas es garantizar que absolutamente nadie pueda eliminarlos, lo mejor es crear una pequeña aplicación que se cargue al inicio de windows y que mantenga todos los ficheros de la carpeta abiertos (En modo shared), de esta forma el explorador se negará a borrarlos porque recibira una excepción de 'violación de acceso compartido'.


No sé si me he explicado
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #9 (permalink)  
Antiguo 15-07-2005, 10:20:50
Buena Participación en el Foro
 
Registrado: feb 2004
Posts: 80
ss_jesus Valoración +2
Predeterminado

Es que me explico como un libro cerrado, en fin muchas gracias esto si me sirve pero ¿podrías extenderte en la explicación de modo shared y esto para que pueda empezar a trastear con ello?¿ tienes algún ejemplo que me pueda interesar? el tema de que se ejecute cuando se inicia lo conozco pero la librería que indicas o el modo shared no se como hacerlo, y ¿de hacerlo en el modo shared me daría algún problema si mi programa las eliminase o modificase? en fin, me aclaras bastante el problema pero ahora me inundo de dudas ya que no estoy familiarizado con la librería que debo utilizar ni como hacerlo

Atentamente un saludo Acalanto


Porque la evolución solo existe si el conocimiento esta al alcance de todos
Responder Con Cita
  #10 (permalink)  
Antiguo 17-07-2005, 11:12:40
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.266
acalanto ha deshabilitado la reputación
Predeterminado

Vamos por partes:

La idea de proteger ficheros para que nadie pueda eliminarlos/modificarlos me resulto atractiva desde el punto de vista de incluirlo en mis aplicaciones.

Inicialmente generé un pequeño proyecto que modificaba los atributos de los ficheros de una determinada carpeta a (Oculto+Sytem), además está aplicación genera un nuevo registo en RUN con lo que garantizo que arranca automáticamente con el Sistema operativo.

A pesar de que lo hace correctísimamente bien, no impide que el usuario pueda visualizar ficheros ocultos (Con el explorador). Al estar marcados como ficheros de sistema, si el usuario (los visualiza) ordena eliminar un fichero, el explorador le advierte que es un fichero de sistema y no debería borralo, pero no se lo impide..... ??.

La siguiente idea pasa por abrir los ficheros para que nadie pueda eliminar/borrar. Como es lógico nuestras aplicaciones deberían tener que acceder al contenido por lo que su apertura debería ser en 'modo compartido' <Open [nombrefichero] for binary SHARED as #fhandle>. Todo esto es correcto sino fuese porque el sistema operativo también permite que un fichero abierto en modo shared, sea eliminado.

La solución final es abrirlos en modo exclusivo pero esto impide que nuestra propia aplicación tenga acceso a esos datos. Para tratar de solucionar este 'escollo' he tratado de diseñar una arquitectura en la que la aplicación que bloquea actúe al tiempo como proveedor/manipulador de estos ficheros mediante comandos enviados por sockets (Como si de un servidor FTP se tratara.).

Además sería necesario implementar un mecanismo que impida que la aplicación /servicio se descargue con el administrador de tareas.

En definitiva se trata de posicionarse por encima del propio sistema operativo y 'darle la vuelta' más o menos como hacen los desarrolladores de virus e infecciones para evitar que sus aplicaciones sean borradas/desinstaladas.

No es imposible (y si quieres te adjunto el proyecto -inacabado-), pero he llegado a la conclusión de que si para evitar que un usuario BORRE Microsoft Office con el explorador, hemos de rediseñar el sistema operativo, estamos perdiendo el enfoque y sacamos las cosas de contexto.


En definitiva creo que l mejor es que optes por la solución más lógica que es modificar los atributos y si un usaurio modifica o elimina unos ficheros de sistema, pues allá él; tendrá que reinstalar e incluso se le podrán dar un par de collejas correctivas.


Para ello debes declarar en el proyecto la referencia Microsoft Scripting Runtime y escribir algo parecido a ésto


Código:
Public Sub LockFiles(folder as string)
    Dim fd As folder,  fc As File, fs As Files
    Dim fso as new FileSystemObject
    On Local Error Resume Next
    'Solicitamos los ficheros de toda la carpeta
    Set fd = fso.GetFolder(folder)
    Set fs = fd.Files
    'Rastreamos el contenido de la carpeta solicitada
    For Each fc In fs
        'Declaramos el fichero como Oculto, solo lectura y de sistema
        fc.Attributes = (Hidden  + System)
    Next fc
End Sub

Intentar cualquier otra cosa me parece que va a hacer más costoso el envoltorio que el propio caramelo.


Espero que este rollo te resulte útil.
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último Mensaje
Indices en acceso a archivos RMCObol con Relativity alfredo_barcena RM/COBOL & Relativity 0 13-06-2006 17:05:39
vb.NET y acceso via ftp gabymdq Visual Basic.NET 2003 & 2005 1 17-09-2004 01:00:00
No acceso a sql Campos_S sql 2000 1 17-09-2004 01:00:00
No acceso a sql Campos_S Visual Basic 6.00 2 17-09-2004 01:00:00
Acceso a DBF Campos_S Visual Basic 6.00 6 17-09-2004 01:00:00


La franja horaria es GMT. Ahora son las 22:25:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design

Alojado en el servicio Premium de Masquewebs | Diseño mejorado por MasqueWebs

right