Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Sistemas operativos > Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-03-2009
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
Aplicación necesita permisos de adminsitrador o no funciona.

Buen dia,

Tengo una aplicación que funciona "perfectamente" cuando el usuario es administrador, pero, una vez se restringe el usuario a "no administrador" deja de funcionar. El error específico es : "Access violation 0c00000142" la aplicación no se ha podido inicializar.......

Ya me duele la cabeza intentando cosas diferente, permisos a carpetas específicas , lo último que leí fue algo con las runtimes libraries y en otro foro hablan tambien de la memoria RAM, pero realmente nada me ha funcionado.

Alguien tiene algún conocimiento sobre esto? le agradecería sobremanera!

Muchas Gracias a todos.
Responder Con Cita
  #2  
Antiguo 26-03-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
El error que mencionas no me suena a que sea por cuestión de permisos...

Generalmente ese error aparece cuando quieres utilizar algo que no existe. Lo mejor sería que pusieras el bloque de código que te genera el error, de esa forma alguien podría identificar más rápido el problema.
__________________

Responder Con Cita
  #3  
Antiguo 26-03-2009
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
Lo curioso Contraveneno, es que si le cambio los permisos al usuario y lo ejecuto como administrador si me funciona normal,
eso es lo que me pone a pensar que es por culpa de algun uso no permitido de memoria, pero como se puede configurar para que la aplicacion funcione?

por favor, necesito esta ayuda urgente,

Gracias!
Responder Con Cita
  #4  
Antiguo 26-03-2009
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
ah Contraveneno se me olvidaba, el bloque de código no se cual es, porque es inmediatamente ejecuto la aplicacion que sucede esto!
gracias!
Responder Con Cita
  #5  
Antiguo 26-03-2009
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
tiene pinta de una excepcion posiblemente por crear o grabar un archivo en alguna carpeta a la que en modo usuario limitado no se tenga acceso.
Si se escribe en registro de Windows tambien puede dar problemas...
Esto son conjeturas...como dice contraveneno sin algo de código poco se puede afinar...
Responder Con Cita
  #6  
Antiguo 27-03-2009
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
JuanErasmo adjunta un pantallazo del error exacto y cuentanos un poco mas de tu aplicacion.
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #7  
Antiguo 27-03-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Deberías explicar qué acciones hace tu programa que puedan ser susceptibles de necesitar permisos de usuario. Escribir en el registro, escribir en determinados directorios, Copia, borrado,...

Puede ser que alguna de estas acciones falle y porteriormente se genere el erorr de memoria.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 27-03-2009
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
el código inicial , lee registro y verifica si hay otra instancia corriendo.

Código:
#include <vcl.h>
#pragma hdrstop

#include "control.h"
#include "presentacion.h"
#include "varios.h"
//---------------------------------------------------------------------------
USEFORM("videos.cpp", Form_Videos);
USEFORM("source code\about\about.cpp", Form_about);
USEFORM("control.cpp", Form_control);
USEFORM("DBagenda.cpp", Form_DBagenda);
USEFORM("entrada.cpp", Form_entrada);
USEFORM("herramientas.cpp", Form_herramientas);
USEFORM("imagenes.cpp", Form_Imagenes);
USEFORM("Login.cpp", FormLogin);
USEFORM("fondo.cpp", FormFondo);
USEFORM("mensajes.cpp", FormMensajes);
USEFORM("Frame_HistoriaLista.cpp", FrameHistoriaLista); /* TFrame: File Type */
USEFORMNS("C:\Archivos de programa\FastReport253\FastReport\source\FR_View.pas", Fr_view, frPreviewForm);
USEFORMNS("C:\Archivos de programa\FastReport253\FastReport\source\fr_desgn.pas", Fr_desgn, frDesignerForm);
USEFORM("encripcion.cpp", Form_Encripcion);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE OtraInstancia, LPSTR, int)
{
//    PRIORIDAD ALTA A LA APLICACIÓN
//   SetPriorityClass (GetCurrentProcess(), REALTIME_PRIORITY_CLASS);
//   SetThreadPriority(GetCurrentThread(),  THREAD_PRIORITY_TIME_CRITICAL);
   LogAgregar(-1, 0, "Iniciando nueva sesion", TLogTipoInformacion);
   //REVISA SI YA HAY OTRA INSTANCIA DEL PROGRAMA CORRIENDO
    static char szMutexName[] = "MyMutexAplicacion"; // Use a unique name!
    WNDCLASS wc;
    HWND hwnd;
    MSG msg;
    HANDLE hMutex;
    hMutex = CreateMutex (NULL, FALSE, szMutexName);
    if ((hMutex != NULL) && (GetLastError () == ERROR_ALREADY_EXISTS))
    {
         MessageBeep(MB_ICONQUESTION);
         LogAgregar(-1, 0, "Ya se ha iniciado otra sesión de Aplicacion", TLogTipoConfirmacion);
         int YaExiste=Application->MessageBox("Ya se ha iniciado otra sesión de Aplicacion\n\nSe recomienda cerrar esta sesion.  Desea continuar abriendo esta sesion?", "Aplicacion", MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2);
         if(YaExiste==IDNO) {
            LogAgregar(-1, 0, "Cancelado el inicio de Aplicacion", TLogTipoInformacion);
            CloseHandle (hMutex);
            return -1;
        }else{
            LogAgregar(-1, 0, "Iniciando doble sesión", TLogTipoInformacion);
        }
    }

   try
   {
     Application->Initialize();
     Application->Title = "Aplicacion";
     Application->HelpFile = "C:\\Application\\ayuda\\Aplicacion1.HLP";
       Application->CreateForm(__classid(TForm_control), &Form_control);
                 Application->CreateForm(__classid(TForm_presentacion), &Form_presentacion);
                 Application->CreateForm(__classid(TFormMensajes), &FormMensajes);
                 Application->CreateForm(__classid(TForm_about), &Form_about);
                 Application->CreateForm(__classid(TForm_DBagenda), &Form_DBagenda);
                 
                                                  Application->CreateForm(__classid(TForm_herramientas), &Form_herramientas);
                 Application->CreateForm(__classid(TForm_Imagenes), &Form_Imagenes);
                                Application->CreateForm(__classid(TForm_entrada), &Form_entrada);
                                Application->CreateForm(__classid(TFormFondo), &FormFondo);
                 Application->CreateForm(__classid(TFormLogin), &FormLogin);
                 Application->CreateForm(__classid(TForm_Encripcion), &Form_Encripcion);
                 Application->Run();
    // }
     }
   catch (Exception &exception)
   {
       LogAgregar(-1, 0, "Excepcion 1: "+exception.Message, TLogTipoError);
       Application->ShowException(&exception);
       Application->Terminate();     
   }
   catch (...)
   {
       try
       {
          throw Exception("");
       }
       catch (Exception &exception)
       {
          LogAgregar(-1, 0, "Excepcion 2: "+exception.Message, TLogTipoError);
          Application->ShowException(&exception);
          Application->Terminate();         }
   }
   return 0;
}
Gracias,,,,,,,les agradecería mucho su colaboración.

Última edición por JuanErasmo fecha: 27-03-2009 a las 14:24:32.
Responder Con Cita
  #9  
Antiguo 27-03-2009
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
Hola y gracias,

Podrá ser la función utilizada para averiguar si esta corriendo otra instancia del mismo ejecutable???

De verdad, en usuario administrador me trabaja de maravilla, pero luego,
" la aplicacion no se ha inicializado correctamente 0c0000000142"

Gracias
Responder Con Cita
  #10  
Antiguo 27-03-2009
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
Cuando le doy click derecho ejecutar como... y selecciono el administrador, si funciona bien,

se me ocurre entonces, crear un ejecutable que llame al programa principal, pero que por código, le pase los parámetros de "ejecutar como..." para que el usuario no tenga que conocer las contraseñas de administrador, sino que estas esten includias como parámetro de un ShellExecute o algo asi,,,,,
es posible hacerlo???


Gracias.
Responder Con Cita
  #11  
Antiguo 27-03-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
¿dónde escribe la función "LogAgregar"?, ¿en un archivo?, ¿en el registro?
__________________

Responder Con Cita
  #12  
Antiguo 27-03-2009
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
En la funcion se le cambia el separador de fecha
tiene algo que ver?
Responder Con Cita
  #13  
Antiguo 27-03-2009
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
La aplicación utiliza MDIForms, es decir, child forms.
tiene algo que ver?
gracias
Responder Con Cita
  #14  
Antiguo 28-03-2009
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
JuanErasmo, es dificil acertar en la causa con los datos que nos das, se me ocurre que podria suceder por codigo no escrito por ti. Lo que te aconsejo es ir comentando trozos de codigo, funciones, etc... asi con prueba & error encontraras la causa.
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #15  
Antiguo 28-03-2009
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
CUando la aplicación en el main dice:
Código:
Application->Initialize();
que es lo que exactamente hace? donde lee? donde escribe,,,,?

Gracias
Responder Con Cita
  #16  
Antiguo 28-03-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Lo único que podría adivinar, es que tienes la aplicación en un directorio no accesible para usuarios normales... Intenta ponerla en algún lugar como "Documents and settgins\All users" o una carpeta así que sea accesible para todos.
__________________

Responder Con Cita
  #17  
Antiguo 28-03-2009
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
Revisando todas los .cpp y los .h, encuentro que dentro del código, en una de las clases hay uno que no me deja ver el Form, y dice:

Class TLFile not found Ignore the error and coninue?
NOTE: ignoring the error may cause components to be deleted or property values to be lost.


tiene algo que ver????

Muchas gracias.
Responder Con Cita
  #18  
Antiguo 28-03-2009
Avatar de mamcx
mamcx mamcx is online now
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Para saber como hacer aplicaciones que funcionen 100% correcto en la plataforma de Windows, es bueno revisar lo que el propio MS dice en su programa "Certificado para windows".

Un documento de base se puede ver en:

http://ampalliance.org/blogs/microso...uirements.aspx

La realidad es que muchos desarrolladores ignoran que MS publica las mejores practicas de desarrollo para su plataforma y que el no seguirlas es por mucho una de las causas principales de lios, inestabilidad del sistema, problemas de seguridad y demas.

Algo adicional para chequear: Nunca, pero nunca jamas, escribas en archivos dentro de "Program Files", esa es una carpeta privilegiada y mucho mas en Vista/Windows 7...
__________________
El malabarista.
Responder Con Cita
  #19  
Antiguo 28-03-2009
Avatar de mamcx
mamcx mamcx is online now
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Aparte de todo, deberias hacer las cosas al derecho y no adivinando. Depuracion Voodo es de lo peor

Simplemente, ejecuta Delphi con un usuario restringido, y depura hasta que encuentres.
__________________
El malabarista.
Responder Con Cita
  #20  
Antiguo 28-03-2009
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
Gracias por el consejo lo voy a intentar asi.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
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
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Permisos de aplicacion Net MaMu .NET 10 15-08-2008 13:56:30
Al compilar crea un ejecutable que solo funciona en mi PC, necesita instalacion?¿ gerardorom C++ Builder 4 13-01-2008 13:09:26
Dar permisos a usuarios desde la aplicacion. Gaim2205 Conexión con bases de datos 11 29-09-2007 14:32:35
La aplicacion no me funciona ivanloco Firebird e Interbase 2 08-06-2007 20:33:26
Aplicación web no funciona.. ElCherchu Internet 1 18-04-2006 01:54:50


La franja horaria es GMT +2. Ahora son las 22:48:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi