Announcement

Collapse
No announcement yet.

ADSI, Fehler beim setzen des Passwortes

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ADSI, Fehler beim setzen des Passwortes

    Hallo,

    mit folgendem Code lege ich einen User im ADS an.
    <PRE>
    var
    usr : IADsUser;
    begin
    Result := True;

    //Versuche User anzulegen
    try
    usr := FADSCont.Create('user', 'CN=' + sBenutzername) as IADsUser;
    usr.Put('sAMAccountName', sBenutzername);
    usr.FirstName := sVorname;
    usr.LastName := sNachname;
    usr.SetInfo;

    usr.SetPasswort(sPasswort);
    usr.AccountDisabled := False;
    usr.SetInfo;
    .
    .
    .
    </PRE>

    Das klappt auch wunderbar. er legt den User wie gewünscht ab, jeddoch steigt er bei SetPasswort(sPasswort); mit der Meldung "Der Netzwerkpfad wurde nicht gefunden" aus.

    Was mache ich falsch?

    John

  • #2
    Hallo,

    im der Hilfedatei des <i>Microsoft Platform SDK</i> steht dazu folgendes: <i>The IADsUser::SetPassword method sets the user password to a specified value. The user account <b>must have been created</b> and stored in the underlying directory using IADs::SetInfo before IADsUser::SetPassword is called.</i>.

    Die Beispiele (VB und C++) auf dieser Seite zeigen, dass vor dem Aufruf von <b>SetPassword</b> die Referenz auf diesen Benutzer neu eingelesen wird

    Comment


    • #3
      Wie lese ich die Referenz neu ein? Laut meiner MSDN würde es genügen das ich vor usr.SetPassword('') nur einmal usr.SetInfo zu setzen

      Comment


      • #4
        Hallo,

        Microsoft verwendet in der Dokumentation das folgende Beispiel:
        <pre>
        Dim usr As IADsUser
        Set usr = GetObject("WinNT://Fabrikam/JSmith,user")
        usr.SetPassword "topsecret98"
        </pre>
        Oder das gleiche in C++:
        <pre>
        HRESULT SetPassword(IADsUser *pUser, LPWSTR passwd)
        {
        HRESULT hr=S_OK;
        <b>if</b>(!pUser) { <b>return</b> E_FAIL;}
        hr = pUser-&gt;SetPassword(passwd);
        <b>if</b> (hr == S_OK) printf(<font color="#9933CC">&quot;User password has been setn&quot;</font>);
        pUser-&gt;Release();
        <b>return</b> hr;
        }
        <br>
        HRESULT GetUserObject(LPWSTR); <font color="#003399"><i>// function listed elsewhere in IADsUser Property Methods.</i></font>
        <b>int</b> main(<b>int</b> argc, <b>char</b>* argv[])
        {
        HRESULT hr = CoInitialize(NULL);
        IADsUser *pUser = GetUserObject(L<font color="#9933CC">&quot;WinNT://Fabrikam/JSmith,user&quot;</font>);
        pUser-&gt;AddRef();
        hr = SetPassword(pUser, L<font color="#9933CC">&quot;tOpSecrete98&quot;</font>);
        <b>if</b>(pUser) pUser-&gt;Release();
        CoUninitialize();
        <b>return</b> 0;
        }
        </pre&gt

        Comment

        Working...
        X