Cita:
Empezado por aguml
Comento que al final no hubo ningún problema al asignar esos privilegios en windows XP y era otro tema diferente el que me estaba dando problemas, simplemente que mi código estaba mal y sin darme cuenta desacia lo que en un principio hacia.
Lo que si me he dado cuenta que en Windows 10 me da error al intentar asignar ese privilegio a mi aplicación porque dice que no se encuentra el token. ¿Alguien me lo puede explicar?
|
No se como asignas privilegios pero deberías hacerlo siguiendo este método que funciona en todos los windows:
Para el proceso actual:
Código PHP:
BOOL EnablePrivilege (PCSTR name, BOOL Enable)
{
BOOL Result;
HANDLE hToken;
TOKEN_PRIVILEGES priv = {1, {0, 0, SE_PRIVILEGE_ENABLED}};
if(!Enable) priv.Privileges[0].Attributes = 0;
LookupPrivilegeValueA(0, name, &priv.Privileges[0].Luid);
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken);
AdjustTokenPrivileges(hToken, FALSE, &priv, sizeof priv, 0, 0);
Result = (GetLastError() == ERROR_SUCCESS);
CloseHandle (hToken);
return Result;
}
Por similitud, para cualquier proceso:
Código PHP:
BOOL EnablePrivilege (HANDLE hProcess, PCSTR PrivName, BOOL Enable)
{
BOOL Result;
HANDLE hToken;
TOKEN_PRIVILEGES priv = {1, {0, 0, SE_PRIVILEGE_ENABLED}};
if(!Enable) priv.Privileges[0].Attributes = 0;
LookupPrivilegeValueA(0, PrivName, &priv.Privileges[0].Luid);
OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES, &hToken);
AdjustTokenPrivileges(hToken, FALSE, &priv, sizeof priv, 0, 0);
Result = (GetLastError() == ERROR_SUCCESS);
CloseHandle (hToken);
return Result;
}
Nota: No usa Unicode
Saludos.