WMI

WMI
[WMI] Permessi NTFS con C#

Esistono numerosi tool (tra i quali secondo me il migliore è xcacls, qui nella versione scripting) che permettono di lavorare con i permessi NTFS. Un'altra strada possibile è quella di utilizzare WMI per accedere a questo tipo di informazioni.Il piccolo script qui sotto mostra l'utilizzo della classe Win32_LogicalFileSecuritySetting per scoprire quali sono gli utenti e i permessi associati ad una determinata cartella (o file):         public void MostraACL(string Path)        {                                    using (ManagementObject mob = new ManagementObject("root\\CIMV2", "Win32_LogicalFileSecuritySetting.Path='" + Path + "'", null))            {                //eseguo il metodo GetDescriptor per ottenere gli elementi                object[] obs = new object[] { 0 };                ManagementBaseObject mbase = (ManagementBaseObject)mob.InvokeMethod("GetSecurityDescriptor", null, null);                //controllo che esistano dei valori                if (((uint)(mbase.Properties["ReturnValue"].Value)).Equals(0))                {                    ManagementBaseObject desc = (ManagementBaseObject)(mbase.Properties["Descriptor"].Value);                    ManagementBaseObject[] ACL = ((ManagementBaseObject[])(desc.Properties["Dacl"].Value));                    //vediamo quali sono i permessi della cartella..                    foreach (ManagementBaseObject mba in ACL)                    {                        //Dominio, Utente e SID                        ManagementBaseObject IUSR = ((ManagementBaseObject)(mba["Trustee"]));                        Console.WriteLine("==================================");                        /* Mostro Dominio\Utente : Sid */                        Console.WriteLine("{0}\\{1} : {2}", IUSR.Properties["Domain"].Value, IUSR.Properties["Name"].Value, IUSR.Properties["SIDString"].Value);                        /* Mostro i permessi */                        uint m = (uint)mba["AccessMask"];                        Console.WriteLine(":" + Enum.Format(typeof(Mask), m, "G"));                        /* Mostro la tipologia di permesso*/                        int a = int.Parse(mba["AceFlags"].ToString());                        Console.WriteLine(":" + Enum.Format(typeof(AceFlags), a, "G"));                        Console.WriteLine("==================================");                    }                    Console.Read();                }            }        } Maggiori informazioni sulle classi Win32_LogicalFileSecuritySetting > powered by IMHO 1.3

posted @ venerdì 11 agosto 2006 14:58 | Feedback (20)

NETShadowCopy

Il progetto, un wrapper per la gestione del Volume Shadow Copy Service direttamente da .NET, è stato accettato da CodePlex.Adesso è il momento di mettermi al lavoro Stay Tuned... powered by IMHO 1.3

posted @ martedì 25 luglio 2006 11:11 | Feedback (4)

[PowerShell] Un esempio di utilizzo...

Powershell (noto fino a qualche tempo fa con il nome di Monad) è una shell che permette di utilizzare scripting con managed code.Ma che cos'è PowerShell?"Windows PowerShell is a new task-based command line shell and intuitive scripting language for system administration that provides comprehensive control and automation for Windows administrators."L'intento dei creatori, come si legge nella documentazione, è quello di aprire le porte ad un nuovo modo di amministrare la piattaforma windows, utilizzando un linguaggio nuovo, basato su una logica ad oggetti ma rimanendo sempre un linguaggio di scripting.A differenza delle altre shells (tipo il cmd.exe), powershell non esegue un...

posted @ venerdì 21 luglio 2006 14:54 | Feedback (0)

Amministrazione remota via WMI

Con l'aggiornamento al Service Pack 1 di Windows 2003 Server è stata introdotta una modifica nel provider WMI: per le operazioni remote su alcune classi è necessario utilizzare una enctrypted connection, specificando quindi la proprietà AuthenticationLevel (in caso contrario si riscontrerà un errore del tipo "Access Denied"). Non è una notizia proprio fresca fresca, me ne rendo conto... ma ci sono incappato solo oggi :( powered by IMHO 1.3

posted @ martedì 18 luglio 2006 15:05 | Feedback (0)