Avatar billede mickni33 Nybegynder
13. oktober 2009 - 09:35 Der er 8 kommentarer og
1 løsning

Active Directory Ændring af password

Jeg har denne metode til at ændre et password men der kommer en exception i linien med "Invoke"
Unknown name. (Exception from HRESULT: 0x80020006 (DISP_E_UNKNOWNNAME))

Er der nogen der kender den fejl?

public void AlterPassword(string username,string oldPassword, string newPassword){
            entry = new DirectoryEntry("LDAP://DomTemp.local", username, oldPassword);
            entry.AuthenticationType = AuthenticationTypes.Secure;
         
            DirectorySearcher deSearch = new DirectorySearcher(entry);
            deSearch.Filter = "(&(objectClass=user) (cn=" + username + "))";
            SearchResultCollection results = deSearch.FindAll();         
         
            entry.Invoke("ChangePassword", new object[] { oldPassword, newPassword });
Avatar billede bvli Praktikant
13. oktober 2009 - 10:16 #1
Du invoker på din entry - ikke på dit søgeresultat.

DirectoryEntry e = results.GetDirectoryEntry();
e.Invoke("ChangePassword", new object[] {old, new});

måske??
Avatar billede mickni33 Nybegynder
13. oktober 2009 - 12:01 #2
Yes du havde ret..
Havde glemt GetDirectoryEntry() så nu virker det..
læg et svar


public void AlterPassword(string username, string oldPassword, string newPassword)
          {
string Password = oldPassword;
              entry = new DirectoryEntry("LDAP://DomTemp.local", "adminUser", "adminPassword");
              entry.AuthenticationType = AuthenticationTypes.Secure;

              DirectorySearcher deSearch = new DirectorySearcher(entry);
              deSearch.Filter = "(&(objectClass=user) (cn=" + username + "))";


              SearchResultCollection results = deSearch.FindAll();
              int index = 0;
//Nu har jeg en bruger som er fundet ud fra filter
              foreach (SearchResult srUser in results)
              {

                // Denne havde jeg glemt
                      entry = srUser.GetDirectoryEntry();
                      System.DirectoryServices.PropertyCollection pc = entry.Properties;
                      entry.Invoke("ChangePassword", new object[] { oldPassword, newPassword });
                      index++;
               
              }

          }
Avatar billede bvli Praktikant
13. oktober 2009 - 12:03 #3
Jep! :)
Avatar billede MRLN Nybegynder
26. oktober 2009 - 10:33 #4
Hvis det er Active Directory hvorfor bruger du så ikke System.DirectoryServices.AccountManagement?
Avatar billede mickni33 Nybegynder
26. oktober 2009 - 13:21 #5
hmmm det måske fordi jeg er nybegynder og aldrig har hørt om det :-)
Det må jeg lige undersøge
Avatar billede MRLN Nybegynder
26. oktober 2009 - 13:29 #6
Vil du have et eksempel?
Avatar billede mickni33 Nybegynder
26. oktober 2009 - 13:30 #7
ja for søren.. mange tak
Avatar billede MRLN Nybegynder
26. oktober 2009 - 13:35 #8
Husk at lave reference til nedenstående
using System.DirectoryServices.AccountManagement;


PrincipalContext context = new PrincipalContext(ContextType.Domain, "DomæneNavn");


  UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(IdentityType.Name,"Brugernavn");

          userPrincipal.SetPassword("Password");
          // eller
          userPrincipal.ChangePassword("Gammelt password", " Ny Password");

          userPrincipal.Save();
Avatar billede mickni33 Nybegynder
26. oktober 2009 - 13:42 #9
ja ok det fylder noget mindre må  jeg sige.. det vil jeg lige prøve af på et tidspunkt
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester