Avatar billede meganight Nybegynder
15. april 2009 - 15:39

Ændring af Mappe Rettigheder over Lan.

Hej jeg har skrevet en Consol Application som hurtigt forklaret.
Ændre i nogle Registreings databaser, renamer nogle mapper og andre småting..
Men dens vigtigste metode er at den går ens Homefolder (C:\Docs and Settings\Brugernavn) igennem og ændre ens rettigheder såvælg du hedder Ck for Ckri rettighederne i stedet for..

Dette gøres for at kunne flytte brugerende over på et nyt Domæne.. dette betyder at Ck ligger på det gamle og Ckri på det nye.
Alt dette fungere fint hvis jeg køre det lokalt på min maskine.

Men hvis jeg flytter det over på en test maskine vi har, og køre det via en Domain Administrator bruger (Som har mere end nok rettigheder) for jeg en fejl hver gang den skal ændre rettighederne
Fejlen lyder på.

Strukturen af sikkerheds-id'et er ugyldig. (Undtagelse fra HRESULT: 0x80070539)

Code Snippet:

public void Rightchange(string path, string UsrName, int accessMask, int flag, string oldUsrName)
        {
            string strFile = path;

            try
            {
                ADsSecurityUtilityClass secuUtil = new ADsSecurityUtilityClass();
                object ob = secuUtil.GetSecurityDescriptor(
                    strFile,
                    (int)ActiveDs.ADS_PATHTYPE_ENUM.ADS_PATH_FILE,
                    (int)ActiveDs.ADS_SD_FORMAT_ENUM.ADS_SD_FORMAT_IID);
                if (null != ob)
                {
                    ActiveDs.IADsSecurityDescriptor sd =
                      (IADsSecurityDescriptor)ob;
                    ActiveDs.IADsAccessControlList obDacl =
                    (ActiveDs.IADsAccessControlList)sd.DiscretionaryAcl;
                    bool bAddAce = true;
                    IEnumerator obAceEnum = obDacl.GetEnumerator();
                    while (obAceEnum.MoveNext())
                    {
                        IADsAccessControlEntry obAce =
                        (IADsAccessControlEntry)obAceEnum.Current;
                        Console.WriteLine("Trustee: {0}", obAce.Trustee);
                        // Check if "ASPNET" account is trustee of ACE or not.

                        if (obAce.Trustee.IndexOf(UsrName) != -1)
                        {
                            // Check if this is a ALOWED Ace or not.

                            if (obAce.AceType ==
                              (int)ADS_ACETYPE_ENUM.ADS_ACETYPE_ACCESS_ALLOWED)
                            {
                                bAddAce = false;
                            }
                        }
                    }

                    // If bAddAce flag is set, then we will add it.

                    if (bAddAce)
                    // Her oprettes den nye.
                    {
                        AccessControlEntryClass obNewAce =
                          new AccessControlEntryClass();
                        obNewAce.AceType =
                          (int)ADS_ACETYPE_ENUM.ADS_ACETYPE_ACCESS_ALLOWED;
                        obNewAce.Trustee = UsrName;
                        obNewAce.AccessMask = accessMask;
                        obNewAce.AceFlags = flag;
                        obDacl.AddAce(obNewAce);
                        sd.DiscretionaryAcl = obDacl;
                        secuUtil.SetSecurityDescriptor(
                                strFile,
                                (int)ADS_PATHTYPE_ENUM.ADS_PATH_FILE,
                                sd,
                                (int)ADS_SD_FORMAT_ENUM.ADS_SD_FORMAT_IID);
                        done = true;
                       
                        // Hvis den nye er oprettet så slettes den gamle.
                        if (done)
                        {
                            AccessControlEntryClass obOldAce =
                                new AccessControlEntryClass();
                            obOldAce.AceType =
                                (int)ADS_ACETYPE_ENUM.ADS_ACETYPE_ACCESS_ALLOWED;
                            obOldAce.Trustee = oldUsrName;
                            obOldAce.AccessMask = accessMask;
                            obOldAce.AceFlags = flag;
                            obDacl.RemoveAce(obOldAce);
                            sd.DiscretionaryAcl = obDacl;
                            secuUtil.SetSecurityDescriptor(
                                    strFile,
                                    (int)ADS_PATHTYPE_ENUM.ADS_PATH_FILE,
                                    sd,
                                    (int)ADS_SD_FORMAT_ENUM.ADS_SD_FORMAT_IID);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            done = false;
        }

Har i nogle bud på problemet ?
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