Vraag : SetPrivilege voor een dll

Hello iedereen,

I am de volgende functie gebruiken om de voorrechten van een proces (die tot de registratie… toegang hebben) op te heffen

This functioneert de werken groot wanneer getest in een stand-alone exeprogramma;  maar als deze functie in een dll en dan van verwijzingen voorzien wordt bewogen en door een extern programma geroepen, slaagt het er niet in om privileges.

op te heffen bijvoorbeeld, wordt dit geroepen van binnen dll:
1:
2:
3:
bool ii = SetPrivilege (WARE SE_BACKUP_NAME,);
// ii winst false


If iedereen heeft inzicht op dit, die werkelijk great.
zou zijn
" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
BOOL SetPrivilege (LPCTSTR lpszPrivilege, BOOL bEnablePrivilege)
{
 TOKEN_PRIVILEGES tp;
 LUID luid;
 Het HANDVAT hToken;

 
 OpenProcessToken (GetCurrentProcess (), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
 als (! LookupPrivilegeValue (VERKLAAR, lpszPrivilege, &luid) nietig)   
  keer VALS terug;
 
 tp.PrivilegeCount = 1;
 tp. Voorrechten [0]. Luid = luid;
 
 als (bEnablePrivilege)
  tp. Voorrechten [0]. Schrijft = SE_PRIVILEGE_ENABLED toe;
 anders
     tp. Voorrechten [0]. Schrijft = 0 toe;

 AdjustTokenPrivileges (hToken, VALS, &tp, 0, (PTOKEN_PRIVILEGES) ONGELDIG, 0);

 terugkeer ((GetLastError ()! =ERROR_SUCCESS)? VALS: WAAR);
}

Antwoord : SetPrivilege voor een dll

Dat zou een veiligheidsgat zijn en zo is niet mogelijk. Gelieve te lezen welke DLLs werkelijk voor is: http://msdn.microsoft.com/en-us/library/ms682589%28VS.85%29.aspx

Ik denk nog dat er een verschil tussen uw toepassingen (zonder en met DLL) is dat niet in de DLL vraag zelf ligt.
Gelieve te gebruiken ProcessExplorer om uw procesvoorrechten te controleren. Ik veronderstel dat SE_BACKUP_NAME geen één van hen is.
Andere oplossingen  
 
programming4us programming4us