| |  |  | Miembros: Mensajes: Temas: Online: Ultimo Miembro: | | |  | | | 
31-08-2010, 12:37:11
| | Usuario VIP del Foro | | Registrado: ago 2004 Ubicación: Tunja Posts: 528
Créditos: 5.917 | | Re: Ejecutar programa como administrador Encontré otra forma de hacerlo con la API de Windows CreateProcesswithLogon aquí te adjunto un ejemplo para que lo acomodes a tu programa. Código: Private Const LOGON_WITH_PROFILE = &H1&
Private Const LOGON_NETCREDENTIALS_ONLY = &H2&
Private Const CREATE_DEFAULT_ERROR_MODE = &H4000000
Private Const CREATE_NEW_CONSOLE = &H10&
Private Const CREATE_NEW_PROCESS_GROUP = &H200&
Private Const CREATE_SEPARATE_WOW_VDM = &H800&
Private Const CREATE_SUSPENDED = &H4&
Private Const CREATE_UNICODE_ENVIRONMENT = &H400&
Private Const ABOVE_NORMAL_PRIORITY_CLASS = &H8000&
Private Const BELOW_NORMAL_PRIORITY_CLASS = &H4000&
Private Const HIGH_PRIORITY_CLASS = &H80&
Private Const IDLE_PRIORITY_CLASS = &H40&
Private Const NORMAL_PRIORITY_CLASS = &H20&
Private Const REALTIME_PRIORITY_CLASS = &H100&
Private Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessId As Long
dwThreadId As Long
End Type
Private Type STARTUPINFO
cb As Long
lpReserved As Long
lpDesktop As Long
lpTitle As Long
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Byte
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type
Private Declare Function CreateProcessWithLogon Lib "Advapi32" Alias "CreateProcessWithLogonW" (ByVal lpUsername As Long, ByVal lpDomain As Long, ByVal lpPassword As Long, ByVal dwLogonFlags As Long, ByVal lpApplicationName As Long, ByVal lpCommandLine As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, lpStartupInfo As STARTUPINFO, lpProcessInfo As PROCESS_INFORMATION) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Sub Form_Load()
Dim lpUsername As String, lpDomain As String, lpPassword As String, lpApplicationName As String
Dim lpCommandLine As String, lpCurrentDirectory As String
Dim StartInfo As STARTUPINFO, ProcessInfo As PROCESS_INFORMATION
lpUsername = "OtherUser"
lpDomain = ""
lpPassword = "other_user_password"
lpApplicationName = "C:\WINNT\NOTEPAD.EXE"
lpCommandLine = vbNullString 'use the same as lpApplicationName
lpCurrentDirectory = vbNullString 'use standard directory
StartInfo.cb = LenB(StartInfo) 'initialize structure
StartInfo.dwFlags = 0&
CreateProcessWithLogon StrPtr(lpUsername), StrPtr(lpDomain), StrPtr(lpPassword), LOGON_WITH_PROFILE, StrPtr(lpApplicationName), StrPtr(lpCommandLine), CREATE_DEFAULT_ERROR_MODE Or CREATE_NEW_CONSOLE Or CREATE_NEW_PROCESS_GROUP, ByVal 0&, StrPtr(lpCurrentDirectory), StartInfo, ProcessInfo
CloseHandle ProcessInfo.hThread 'close the handle to the main thread, since we don't use it
CloseHandle ProcessInfo.hProcess 'close the handle to the process, since we don't use it
'note that closing the handles of the main thread and the process do not terminate the process
'unload this application
Unload Me
End Sub Espero te sea de ayuda. | 
31-08-2010, 14:45:30
|  | Buena Participación en el Foro | | Registrado: sep 2006 Ubicación: Paraguay Posts: 53
Créditos: 1.322 | | Re: Ejecutar programa como administrador Gracias Hernan,
Voy a probar eso. Te cuento que lo del runas no funciona. Probe varias otras formas que encontre en internet y nada. No ejecuta ni con mi usuario Administrador el archivo .vbs
Ya encontre como hacer que aparezcan las pestañas de Seguridad en las propiedades de Carpetas y Archivos. Le puse a los Usuarios permisos de CONTROL TOTAL y nada.
Tampoco funciona.
Pero voy a probar esto.
Gracias nuevamente amigo.
__________________ Lic. Rafael Barrios Falcón
ELECTROMATICA
--------------------------------------
"El saber y el conocimiento compartido, es la mejor forma de crecer todos juntos y soñar con un mundo mejor." | 
31-08-2010, 14:58:49
| | Gran Participación en el Foro | | Registrado: feb 2009 Ubicación: Vigo (España) Posts: 416
Créditos: 2.052 | | Re: Ejecutar programa como administrador Cita:
Empezado por chronos682 Encontré otra forma de hacerlo con la API de Windows CreateProcesswithLogon aquí te adjunto un ejemplo para que lo acomodes a tu programa. | Muchas gracias, no conocía esa API.
Yo para cosas parecidas, no exactamente lo mismo, probé con LogonUser y con WNetAddConnection2 para tener acceso a recursos de red.
Esa podría venirme muy bien, pero en la primera prueba no me funciona. Puede que tenga que ver con que en el equipo donde trabajo no me logueo dentro del dominio al que quiero asignar el proceso... o algo así, salvo error garrafal.
Seguiré dándole vueltas cuando tenga tiempo porque a primera vista eso hace cosas que no se consiguen con las APIs que comenté antes.
Un saludo y nuevamente gracias por la info.
__________________ "Deseo proponer a la favorable consideración del lector una doctrina que, me temo, podrá parecer desatinadamente paradójica y subversiva. La doctrina en cuestión es la siguiente: no es deseable creer una proposición cuando no existe fundamento para suponer que sea cierta." [Bertrand Russell] | 
31-08-2010, 17:55:28
|  | Buena Participación en el Foro | | Registrado: sep 2006 Ubicación: Paraguay Posts: 53
Créditos: 1.322 | | Re: Ejecutar programa como administrador Hernan, Sigue sin funcionar. Copie ese codigo en un proyecto nuevo, lo compile y nada.
Tambien lo agregué a mi proyecto y nada.
Sencillamente no hace nada.
Yo uso la cuenta Administrador que viene por defecto en el windows y funcionan los ejecutables.
Pero con una Cuenta Administrador que cree yo y otra Limitada, no pasa nada.
En la otra cuenta administrador: Administrador2 me da error de librerias DAO350.LL, etc.
No se ejecuta ni el Visual Basic 6.
Al querer ejecutar mi ejecutable con el programa RUNAS me pide la contraseña pero sale error: 5, Acceso denegado.
Uso el sgte. comando: runas /user:Administrador "D:\MiCarpeta\PROGRAMA.EXE"
Pero da el error 5.
Otra cosa, el usuario Limitado, puede ver y modificar la pestaña "Seguridad" de carpetas y archivos. No debería pasar eso verdad?
Pienso que algo está mal instalado, porque el Administrador2 tampoco puede ejecutar ni el Visual Basic.
Voy a seguir investigando.
__________________ Lic. Rafael Barrios Falcón
ELECTROMATICA
--------------------------------------
"El saber y el conocimiento compartido, es la mejor forma de crecer todos juntos y soñar con un mundo mejor." | 
31-08-2010, 20:40:16
| | Usuario VIP del Foro | | Registrado: ago 2004 Ubicación: Tunja Posts: 528
Créditos: 5.917 | | Re: Ejecutar programa como administrador Amigo rbarrios, estuve probando el código de la página web que te envié primero y funciona perfectamente, de hecho te voy a adjuntar el código que utilicé y que por lo menos a mi me funciona perfecto, lo probé en una cuenta limitada llamada Usuario para que ejecutara el notepad desde la cuenta Hernan que es la de administrador del equipo y funciona correctamente.
NOTA: Debes generar el .exe primero para que funcione y ejecutarlo directamente desde el, no desde el IDE del VB. Código: Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
'Ejecuta el runas.exe
'/user:Hernan es el nombre de usuario de la cuenta de administrador
'cambiar C:\WINDOWS\notepad.exe por el path del ejecutable
Shell "runas.exe " & "/user:Hernan " & Chr$(34) & "C:\WINDOWS\notepad.exe" & chr$(34), vbNormalFocus
'Detiene la ejecución del programa 100 ms
Sleep 100
'Limpia el Clipboard
Clipboard.Clear
'Copia la contraseña al portapapeles
'Cambiar 123456789 por la contraseña de la cuenta de usuario
Clipboard.SetText "123456789" & Chr$(13)
Sleep 100
'Activa la ventana de MS-DOS
AppActivate "C:\WINDOWS\system32\runas.exe", True
'Pega el contenido del portapapeles en el prompt
SendKeys "% {e}{p}", True
'Limpia el portapapeles para que no tengan la contraseña
Clipboard.Clear
End Sub Espero y a ti también te funcione. | 
01-09-2010, 01:01:06
|  | Buena Participación en el Foro | | Registrado: sep 2006 Ubicación: Paraguay Posts: 53
Créditos: 1.322 | | Re: Ejecutar programa como administrador Estimado Hernan,
No funciona, Probe asi mismo como esta y tambien con varias modificaciones y no hay caso.
Se abre una ventana del DOS y se cierra ensegida sin ejecutar ningun programa (ni el notepad.exe)
Abri una ventana del DOS (simbolo de comando) y descubri que da un error:
ver imagen: ErrorRunas.jpg
El notepad.exe funciona sin problema si lo ejecuto directamente desde el explorador de windows. Pero con el runas da el error que esta en la imagen: ErrorRunas.jpg
__________________ Lic. Rafael Barrios Falcón
ELECTROMATICA
--------------------------------------
"El saber y el conocimiento compartido, es la mejor forma de crecer todos juntos y soñar con un mundo mejor." | 
01-09-2010, 01:32:35
| | Usuario VIP del Foro | | Registrado: ago 2004 Ubicación: Tunja Posts: 528
Créditos: 5.917 | | Re: Ejecutar programa como administrador Ahí si no se como más ayudarte porque he probado el programa en 3 computadores diferentes y en los 3 me ha funcionado correctamente, no se si sea error de tu SO o que pueda estar ocurriendo. El usuario Administrador tiene contraseña? porq si está en blanco te va a dar error. | 
01-09-2010, 01:40:13
|  | Buena Participación en el Foro | | Registrado: sep 2006 Ubicación: Paraguay Posts: 53
Créditos: 1.322 | | Re: Ejecutar programa como administrador Recien instale mi SO pero me da algunos errores en otros programas. Puede ser que sea eso.
Voy a probarlo en otra computadora.
Igualmente muchas gracias.
__________________ Lic. Rafael Barrios Falcón
ELECTROMATICA
--------------------------------------
"El saber y el conocimiento compartido, es la mejor forma de crecer todos juntos y soñar con un mundo mejor." | 
01-09-2010, 02:08:27
| | Usuario VIP del Foro | | Registrado: ago 2004 Ubicación: Tunja Posts: 528
Créditos: 5.917 | | Re: Ejecutar programa como administrador ¿Alguno de los moderadores o algún otro usuario puede probar el código que coloque antes para saber si es error del código o problema del PC del amigo rbarrios? | 
01-09-2010, 02:29:22
| | Usuario VIP del Foro | | Registrado: ago 2004 Ubicación: Tunja Posts: 528
Créditos: 5.917 | | Re: Ejecutar programa como administrador Creo que ya encontré la causa de que te aparesca ese error y es porque no tienes activado el servicion Secondary Logon, debes activarlo primero para que funcione el runas así:
Ve a Inicio - Programas - Herramientas administrativas - Servicios, busca Secondary Logon en la lista de servicios y dale doble clic, cuando se abra el cuadro de diálogo selecciona Automatico en Tipo de inicio o algo así porque mi SO es en Inglés y dice Startup Type, luego dale clic al botón Empezar o Iniciar o Start.
Espero que esto te ayude a solucionar tu problema. |
Normas de Publicación
| no Puedes crear nuevos temas no Puedes responder a temas no Puedes adjuntar archivos no Puedes editar tus mensajes Código [IMG] está habilitado Código HTML está deshabilitado | | | La franja horaria es GMT. Ahora son las 13:02:28.
Powered by vBulletin® Version 3.6.8 Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0 |  |