Операционная система: Windows XP (Embedded) Язык: c #
Проблема: С ограниченной учетной записью пользователя я пытаюсь изменить дату и время Windows XP программно, используяfunction SetSystemTime () , но возвращает false и код ошибки 5: Доступ запрещен .
После прочтения статей MSDN я олицетворяю ограниченную учетную запись пользователя для администраторапользователь (принадлежащий к группе администраторов и имеющий права на изменение системного времени), используя функции LogonUser () и Impersonate (), и вызывает после SetSystemTime (), но результат такой же, как и раньше.
Я пытаюсьпредоставить привилегию «SeSystemtimePrivilege» ограниченной учетной записи пользователя, после того, как имитировать ее перед вызовом AdjustTokenPrivileges (), которая не возвращает ошибки, но результат такой же, как и раньше.
Код:
const int SE_PRIVILEGE_ENABLED = 2;
// Starting with limited user account
intPtr userToken = WindowsIdentity.GetCurrent(TokenAccessLevels.AdjustPrivileges | TokenAccessLevels.Query).Token;
IntPtr tokenDuplicate = IntPtr.Zero;
IntPtr token = IntPtr.Zero;
LogonUser("administrator", domain, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref token);
DuplicateToken(token, 2, ref tokenDuplicate);
WindowsImpersonationContext wic = (new WindowsIdentity(tokenDuplicate)).Impersonate();
bool enabled = true;
TOKEN_PRIVILEGES tokenPrivilege = new TOKEN_PRIVILEGES();
tokenPrivilege.PrivilegeCount = 1;
tokenPrivilege.Privileges = new LUID_AND_ATTRIBUTES[tokenPrivilege.PrivilegeCount];
tokenPrivilege.Privileges[0].Attributes = (UInt32)(enabled ? SE_PRIVILEGE_ENABLED : SE_PRIVILEGE_DISABLED);
if (LookupPrivilegeValue(null, "SeSystemtimePrivilege", out tokenPrivilege.Privileges[0].Luid))
AdjustTokenPrivileges(userToken, false, ref tokenPrivilege, (UInt32)Marshal.SizeOf(typeof(TOKEN_PRIVILEGES)), IntPtr.Zero, IntPtr.Zero);
// Return to limited user account
wic.Undo();
if(!SetSystemTime(systemTime)) // systemTime in UTC time
.... Error code here, 5 if I let administrator impersonate or 1314
У вас есть идея, как решить мою проблему?
Спасибо за ваш ответ, Алена