Pedir autorización de administrador de windows
Pedir autorización de administrador de windows
¿Que debo hacer para que un programa que no se está ejecutando como administrador pida la autorización para poder modificar el registro de windows?
Saludos
Quique
Quique
Re: Pedir autorización de administrador de windows
¿entonces no se puede con fivewin?
Saludos
Quique
Quique
- Antonio Linares
- Site Admin
- Posts: 42520
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 31 times
- Been thanked: 75 times
- Contact:
Re: Pedir autorización de administrador de windows
Quique,
Aqui parece estar la documentación necesaria de Windows:
http://msdn.microsoft.com/en-us/library/aa376389%28VS.85%29.aspx
Aqui parece estar la documentación necesaria de Windows:
http://msdn.microsoft.com/en-us/library/aa376389%28VS.85%29.aspx
Code: Select all | Expand
BOOL IsUserAdmin(VOID)
/*++
Routine Description: This routine returns TRUE if the caller's
process is a member of the Administrators local group. Caller is NOT
expected to be impersonating anyone and is expected to be able to
open its own process and process token.
Arguments: None.
Return Value:
TRUE - Caller has Administrators local group.
FALSE - Caller does not have Administrators local group. --
*/
{
BOOL b;
SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
PSID AdministratorsGroup;
b = AllocateAndInitializeSid(
&NtAuthority,
2,
SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0,
&AdministratorsGroup);
if(b)
{
if (!CheckTokenMembership( NULL, AdministratorsGroup, &b))
{
b = FALSE;
}
FreeSid(AdministratorsGroup);
}
return(b);
}
Re: Pedir autorización de administrador de windows
Disculpa Antonio, pero mi ignorancia de C es mayor de lo que cualquiera puede imaginar, pero se me hizo facil hacer lo siguiente:
Pegarla debajo de otra función que también tengo en C en el mismo programa cambiando la primera lína y agregando la linea hb_retc( b ); casi al final
y no compiló![Sad :(](./images/smilies/icon_sad.gif)
Pero de cualquier manera, no estoy seguro que esa sea la respuesta, porque lo que necesito es que el programa pida la autorización de administrador como lo hace cualquier programa de instalación, aunque en este caso no es instalación, únicamente es para escribir en el registro de windows, y según entiendo, lo único que hace esta función es devolver si el usuario es administrador.
Pegarla debajo de otra función que también tengo en C en el mismo programa cambiando la primera lína y agregando la linea hb_retc( b ); casi al final
Code: Select all | Expand
//BOOL IsUserAdmin(VOID)
HB_FUNC( IsUserAdmin )
/*++
Routine Description: This routine returns TRUE if the caller's
process is a member of the Administrators local group. Caller is NOT
expected to be impersonating anyone and is expected to be able to
open its own process and process token.
Arguments: None.
Return Value:
TRUE - Caller has Administrators local group.
FALSE - Caller does not have Administrators local group. --
*/
{
BOOL b;
SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
PSID AdministratorsGroup;
b = AllocateAndInitializeSid(
&NtAuthority,
2,
SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0,
&AdministratorsGroup);
if(b)
{
if (!CheckTokenMembership( NULL, AdministratorsGroup, &b))
{
b = FALSE;
}
FreeSid(AdministratorsGroup);
}
hb_retl( b );
return(b);
}
y no compiló
![Sad :(](./images/smilies/icon_sad.gif)
Code: Select all | Expand
Warning W8061 ..\\fuentes\\main.prg 583: Initialization is only partially bracketed in function HB_FUN_IsUserAdmin
Warning W8081 ..\\fuentes\\main.prg 602: void functions may not return a value in function HB_FUN_IsUserAdmin
Error: Unresolved external '_HB_FUN_ISUSERADMIN' referenced from D:\QUIQUESOFT\IDE\.HBMK\WIN\BCC\MAIN.OBJ
Pero de cualquier manera, no estoy seguro que esa sea la respuesta, porque lo que necesito es que el programa pida la autorización de administrador como lo hace cualquier programa de instalación, aunque en este caso no es instalación, únicamente es para escribir en el registro de windows, y según entiendo, lo único que hace esta función es devolver si el usuario es administrador.
Saludos
Quique
Quique