Red de conocimiento informático - Material del sitio web - ¿Cómo elevar los permisos de proceso a permisos del sistema en VB?

¿Cómo elevar los permisos de proceso a permisos del sistema en VB?

Hay mucha información en Internet...

1 Obtenga el identificador del proceso actual que necesita escalar privilegios

2 Luego obtenga el token de acceso del proceso actual

3 Finalmente, elevar privilegios

Funciones que deben usarse:

GetCurrentProcess: obtiene el pseudo identificador del proceso actual

OpenProcessToken : Obtiene el token de acceso del proceso actual

LookupPrivilegeValue: encuentra el valor de permiso de los permisos del sistema y lo devuelve a la estructura LUID

AdjustTokenPrivileges: se utiliza para elevar privilegios

La siguiente es una función que eleva los privilegios de depuración del proceso actual. A menudo escribo esta función en un módulo:

Función de declaración pública GetCurrentProcess Lib "kernel32" () As Long

<. p>Función de declaración pública LookupPrivilegeValue Lib "advapi32" Alias ​​​​"LookupPrivilegeValueA" (ByVal lpSystemName como cadena, ByVal lpName como cadena, lpLuid como LUID) siempre y cuando

Función de declaración pública OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle mientras, ByVal DesiredAccess mientras, TokenHandle mientras) Mientras

p>

Función de declaración pública AjustarTokenPrivileges Lib "advapi32" (ByVal TokenHandle mientras, ByVal DisableAllPrivileges mientras, NewState como TOKEN_PRIVILEGES, _

ByVal BufferLength Mientras, PreviousState Como TOKEN_PRIVILEGES, ReturnLength Mientras) Mientras

Const pública TOKEN_ADJUST_PRIVILEGES = &H20

Const pública TOKEN_QUERY = &H8

Const pública SE_DEBUG_NAME = "SeDebugPrivilege"

Const pública ANYSIZE_ARRAY = 1

Const pública SE_PRIVILEGE_ENABLED = & H2

Tipo público LUID

Parte baja mientras

Parte alta mientras

Tipo final

Tipo público LUID_AND_ATTRIBUTES

pLuid como LUID

Atributos siempre

EndType

Tipo público TOKEN_PRIVILEGES

PrivilegioCuenta mientras

Privilegios (ANYSIZE_ARRAY) Como LUID_

AND_ATTRIBUTES

Tipo final

Public Sub AjustaProcPriv() 'Este es un subproceso que eleva los privilegios de depuración. Este es el subproceso de elevación de permisos de depuración

Dim Ret As Long, PrevNeed As Long, PrevLen As Long

Dim HCurProc As Long, HToken As Long, NewPrivilege As TOKEN_PRIVILEGES

Dim PrevPrivilege As TOKEN_PRIVILEGES, GetLuid As LUID

HCurProc = GetCurrentProcess

Ret = OpenProcessToken(HCurProc, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, HToken)

Ret = LookupPrivilegeValue ("", SE_DEBUG_NAME, GetLuid)

NewPrivilege.PrivilegeCount = 1

NewPrivilege.Privileges(0).pLuid = GetLuid

NewPrivilege.Privileges( 0) .Attributes = SE_ PRIVILEGE_ENABLED

PrevLen = Len(PrevPrivilege)

Ret = AjustarTokenPrivileges(HToken, False, NewPrivilege, PrevLen, PrevPrivilege, PrevNeed)

End Sub

Lo más importante es comprender y conocer el significado de los parámetros de la función. Si no comprende algo, hágalo.

Preguntas de seguimiento

.

Parámetro Expert LookupPrivilegeValue No es opcional, por qué

Respuesta

No entiendo lo que dijiste. No entiendo, por qué no me envías tu código, lo miro y te lo explico

Preguntas de seguimiento

GetCurrentProcess ': Obtener el pseudo identificador del proceso actual

p>

OpenProcessToken ': obtiene el token de acceso del proceso actual