Какая функция winapi позволит мне изменить пароль пользователя? - PullRequest
1 голос
/ 11 октября 2010

Я ищу функцию winapi, которая позволит мне изменить текущий пароль пользователя, вошедшего в систему. В моем случае я знаю текущий пароль вошедшего в систему пользователя. Я использую Windows 7 Ultimate.

Спасибо.

Фон

Фон будет выглядеть странно, но я собираюсь описать его для пояснения. Мой персональный домашний компьютер используется несколькими пользователями (папа, сестра, двоюродные братья и т. Д.). Я единственный администратор ПК. Все остальные являются стандартными пользователями. Все учетные записи защищены паролем.

Мне не нравится, что другие люди используют мой аккаунт, потому что они что-то связывают. Я всегда устанавливаю все программы из своей учетной записи, а также устраняю неполадки с ПК. Когда я в течение нескольких недель отсутствую на компьютере, может быть, кому-то другому нужно установить программное обеспечение или сделать что-то, требующее административных прав. По этой причине им может понадобиться использовать мой аккаунт. Могут быть экстренные случаи, и я должен разрешить пользователю войти в мою учетную запись, указав пароль учетной записи.

Я недавно столкнулся с такой ситуацией. Прежде чем покинуть свой компьютер на долгое время, я изменил свой обычный пароль на другой. Я изменю это снова, когда достигну своего ПК.

Так что я думаю написать крошечную программу, которая будет запускаться каждый раз, когда кто-то входит в мою учетную запись. Программа изменит текущий пароль только на тот, который мне известен. В этом случае, если кто-то войдет в мою учетную запись, установит что-либо, выйдет из системы и не сможет войти в систему после изменения пароля.

Предположим, я установил пароль своей учетной записи как abcd. Когда кто-то входит в систему, программа изменит его на abcde. В следующий раз может быть abc123 и т. Д.

Ответы [ 2 ]

6 голосов
/ 12 октября 2010

Вы ищете NetUserChangePassword (). Проверьте эту ссылку MSDN для образца кода:

http://support.microsoft.com/kb/151546

0 голосов
/ 11 октября 2010

Вы можете использовать ADSI для подключения к локальной машине, получить объект пользователя и вызвать действие изменения пароля.

MSDN документ на IADsUser::ChangePassword имеет следующий пример.

В следующем примере кода "C ++" показано, как изменить пароль пользователя.

HRESULT ChangePassword(
    IADsUser *pUser, 
    LPWSTR oldPasswd, 
    LPWSTR newPasswd)
{
    HRESULT hr=S_OK;
    if(!pUser) { return E_FAIL;}
    hr = pUser->ChangePassword(oldPasswd, newPasswd);
    printf("User password has been changed");
    return hr;
}

В следующем примере кода VB показано, как получить пользователя и изменить пароль пользователя.

Dim usr As IADsUser
Dim szOldPass As String
Dim szNewPass As String

On Error GoTo Cleanup

' Fabrikam is the MSDN fictional domain - us '.' for localhost
Set usr = GetObject("WinNT://Fabrikam/JeffSmith,user")
' Add code to securely retrieve the old and new password.

usr.ChangePassword szOldPass, szNewPass

Cleanup:
    If (Err.Number<>0) Then
        MsgBox("An error has occurred. " & Err.Number)
    End If
    Set usr = Nothing
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...