Autor Beitrag
monsi1
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 16.08.07 14:44 
Hallo!

Ich habe folgendes Problem. Mein Programm soll alle Mitglieder einer bestimmten AD-Gruppe überprüfen ob sie gesperrt sind, und gegebenenfalls wieder entsperren.
Soweit hab ich mir den Code ja schon zusammengegoogeld ;-) und die Accounts werden auch schon wieder entsperrt.
Nun wollte ich auch noch in einem Log-File mitprotokollieren welche Accont's wieder entsperrt worden sind. Dazu muß ich aber vorher abfragen ob das Account gestperrt ist, und dabei hab ich so meine Probleme.
Mit der Zeile 8 unten im Source komme ich nicht ganz klar. Sie sollte eigentlich true zurückliefern wenn das Account gesperrt ist. Bei mir dürfte es aber immer true sein, da immer alle Accounts entsperrt werden.

Kann mir dabei jemand helfen?

Danke im Voraus, monsi1

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
              for (int i = 0; i < propertyCount; i++)
                {
                    dn = (String)result.Properties["member"][i];
                    DirectoryEntry user = new DirectoryEntry("LDAP://" + dn, nullnull, AuthenticationTypes.Secure);
                    userName = (string)user.Properties["Name"].Value;
                    if ((int)user.Properties["userAccountControl"].Value != 0)
                    {
                        if (((int)user.Properties["userAccountControl"].Value & (int)ADAccountOptions.UF_ACCOUNT_LOCKOUT) == 0                       {
                            user.Properties["LockOutTime"].Value = 0;
                            user.CommitChanges();
                            user.Close();

                            string myPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
                            myPath = System.IO.Path.GetDirectoryName(myPath);

                            StreamWriter w = File.AppendText(myPath + @"\\UnlockUsers.log");
                            w.WriteLine(DateTime.Now.ToLongTimeString() + " " + DateTime.Now.ToLongDateString()
                                        + ", Benutzer '" + userName + "' wurde entsperrt");
                            // Close the writer and underlying file.
                            w.Close();
                        }
                    }
                }
monsi1 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 16.08.07 16:10 
Hallo!

Hab die Lösung für mein Problem mittlerweile selbst gefunden.
Falls es noch jemanden interessiert, unten der funktionierende Code.

LG, monsi1

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
              for (int i = 0; i < propertyCount; i++)
                {
                    dn = (String)result.Properties["member"][i];
                    DirectoryEntry user = new DirectoryEntry("LDAP://" + dn, nullnull, AuthenticationTypes.Secure);
                    userName = (string)user.Properties["Name"].Value;
                     bool isAccountLocked = (bool)user.InvokeGet("IsAccountLocked");
                    if (isAccountLocked)
                    {
                        user.Properties["LockOutTime"].Value = 0;
                        user.CommitChanges();
                        user.Close();

                        string myPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
                        myPath = System.IO.Path.GetDirectoryName(myPath);

                        StreamWriter w = File.AppendText(myPath + @"\\UnlockUsers.log");
                        w.WriteLine(DateTime.Now.ToLongTimeString() + " " + DateTime.Now.ToLongDateString()
                                    + ", Benutzer '" + userName + "' wurde entsperrt");
                        // Close the writer and underlying file.
                        w.Close();
                    }
                    
                }