Frage : SetPrivilege für ein DLL

Hallo jeder,

I morgens using die folgende Funktion, zum der Privilegien von einem Prozess zu erhöhen (die auf das Register… zurückgreifen)

This Funktion bearbeitet großes, wenn sie in einem allein stehenden exe Programm geprüft;  aber, wenn diese Funktion in ein DLL verschoben und durch ein externes Programm bezogen dann und benannt, nicht kann sie privileges.

zum Beispiel erhöhen, dieses benannt innerhalb vom DLL:
1:
2:
3:
bool II = SetPrivilege (SE_BACKUP_NAME, AUSRICHTEN);
Rückkehr false


If, das jedermann Einblick auf diesem, das hat, sein wirklich great.
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;
 HANDGRIFF hToken;

 
 OpenProcessToken (GetCurrentProcess (), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
 wenn (! LookupPrivilegeValue (NULL, lpszPrivilege, &luid))   
  RÜCKHOLFALSCHES;
 
 tp.PrivilegeCount = 1;
 TP. Privilegien [0]. Luid = luid;
 
 wenn (bEnablePrivilege)
  TP. Privilegien [0]. Attribute = SE_PRIVILEGE_ENABLED;
 sonst
     TP. Privilegien [0]. Attribute = 0;

 AdjustTokenPrivileges (hToken, FALSCH, &tp, 0, (PTOKEN_PRIVILEGES) NULL, 0);

 zurückgehen ((GetLastError ()! =ERROR_SUCCESS)? FALSCH: AUSRICHTEN);
}

Antwort : SetPrivilege für ein DLL

Die sein eine Sicherheitslücke und ist folglich nicht möglich. Bitte gelesen, was DLLs wirklich für sind: http://msdn.microsoft.com/en-us/library/ms682589%28VS.85%29.aspx

Ich denke noch, dass es einen Unterschied zwischen Ihren Anwendungen gibt (ohne und mit DLL) der nicht im DLL-Anruf selbst liegt.
ProcessExplorer bitte verwenden, um Ihre Prozessprivilegien zu überprüfen. Ich schätze, dass SE_BACKUP_NAME nicht eins von ihnen ist.
Weitere Lösungen  
 
programming4us programming4us