In Windows 2003 wird definitiv das Privileg automatisch geholt. Siehe:
Code:
.text:77E8F99B push eax
[color=green].text:77E8F99C push 0Ch[/color]
[b].text:77E8F99E call _BasepAcquirePrivilegeEx@8[/b]
.text:77E8F9A3 mov esi, eax
.text:77E8F9A5 test esi, esi
.text:77E8F9A7 jl short loc_77E8F9C3
.text:77E8F9A9 push 0
.text:77E8F9AB lea eax, [ebp+var_8]
.text:77E8F9AE push eax
.text:77E8F9AF call ds:__imp__NtSetSystemTime@8
.text:77E8F9B5 push [ebp+arg_0]
.text:77E8F9B8 mov esi, eax
[b].text:77E8F9BA call _BasepReleasePrivilege@4[/b]
.text:77E8F9BF test esi, esi
Das sind zwar Symbole aus den PDBs (werden also nicht exportiert), aber da gucke ich auch nicht weiter nach bei so eindeutigem Namen. Auf Ebene der Native APIs gibt es keine Namen für die Privilegien ... nur falls sich jemand wundern sollte. Hier wäre das der Übergabewert aus der grün markierten Zeile, der natürlich kein String ist. Stattdessen werden LUIDs benutzt (64bit-Werte die auf dem System eindeutig sind).
Habe jetzt nur die Kernel32.dll von NT4 in der Schnelle zur Hand, aber da der Code fast identisch zu dem bei 2003 Server ist, denke ich, daß es durchgehend ab mindestend NT4 automatisch passiert, daß diese
Win32-
API ihre Rechte holt!