Go to content Go to navigation Go to search

Cómo obtener el SID de un usuario local? – C#

February 2nd, 2010 by JuanK

Obtener el SID del usuario que se encuentra ejecutando la aplicación es bastante sencillo:

  1. Adicionar using a System.Security.Principal
  2. Instanciar un objeto WindowsIdentity
  3. Construirlo a partir de WindowsIdentity.GetCurret()
  4. Usar la propiedad Value
using System;
using System.Security.Principal;
 
class Program
{
    static void Main(string[] args)
    {
        WindowsIdentity currentUser = WindowsIdentity.GetCurrent();
        Console.WriteLine(currentUser.User.Value);
        Console.ReadLine();
    }
}

Sin embargo tratar de acceder a la información de los usuarios diferentes del logueado actualmente ( y sin usar impersonación ) puede ser un poco más complejo. Una alternativa viable es hacer uso de WMI.

  1. Adicionar la referencia a System.Management y el respectivo using
  2. A traves de WMI se debe hacer un query al objeto Win32_UserAccount
  3. Especificar el nombre del dominio, si es local es el nombre de la máquina el cual se peude obtener a traves de System.Environment
  4. Hacer una búsqueda sobre el query
  5. Usar el indizador accediento con la cadena “SID”
using System;
using System.Management;
 
class Program
{
    static void Main(string[] args)
    {
       SelectQuery sQuery = new SelectQuery("Win32_UserAccount", "Domain='" 
                                      + System.Environment.MachineName + "'");
        ManagementObjectSearcher mSearcher = new ManagementObjectSearcher(sQuery);
        
        Console.WriteLine("User Accounts");
        Console.WriteLine("");
        foreach (ManagementObject mObject in mSearcher.Get())
            Console.WriteLine(mObject["SID"]);
 
        Console.ReadLine();
    }
}

Happy Learning!

Bookmark and Share

Cómo encontrar los archivos pst de outlook? – C#

February 2nd, 2010 by JuanK

Con ayuda de las facilidades de interoperabilidad que ofrece .Net Framework y desde luego con ayuda de Visual Studio este proceso es bastante sencillo.

 

El primer paso es desde luego agregar una referencia al objeto COM de Outlook para que Visual Studio nos importe el componente y esto nos permita acceder al objeto COM como lo haríamos normalmente con cualquiero otra librería para usar con el framework. El componente COM a que debemos acceder es (o equivalente de acuerdo a la versión de office instalada): 

image

Como buena práctica resulta importante colocarle un alias al namespace, por ejemplo:

using Outlook = Microsoft.Office.Interop.Outlook;

Los pasos importantes siguientes se resumen así:

  1. Instanciar un objeto de la aplicación (outlook)
  2. Obtener los stores (almacenamientos de datos) para la sesión actual
  3. Verificar que exista un FilePath, esto es necesario puesto que si el store esta en exchange el FilePath es nulo.
  4. Verificar que el FilePath termine en “.pst”, pues algunos stores de caché tienen extensiones diferentes.
  5. El resto es maquillaje
using System;
using System.Text;
using Outlook = Microsoft.Office.Interop.Outlook;
 
class Program
{
    static void Main(string[] args)
    {
        StringBuilder sb = new StringBuilder();
        Outlook._Application outlookObj = new Outlook.Application();
 
        foreach (Outlook.Store store in outlookObj.Session.Stores)
            if (store.FilePath != null && store.FilePath.EndsWith(".pst"))
                sb.AppendLine(store.FilePath);
 
        Console.WriteLine(sb.ToString());
        Console.ReadLine();
    }
}

Happy Learning!

Bookmark and Share

Utilizar Geshi Con WordPress

February 2nd, 2010 by JuanK

WordPress es una poderosa herramienta de publicación web muy frecuentemente utilizada para hacer Blog como este :P .

Para efectos de inserción de código WordPress permite utilizar la etiqueta <code> con la cual, combinándola con la etiqueta <pre> se pueden obtener resultados como se pueden ver en este ejemplo:

int main()
{
   printf("Hola Mundo"):
   return 0;
}

Sin embargo cuando se busca obtener resultados mas estilizados y profesionales se hace necesario colorear la sintaxis del códigos manualmente y pensar en soluciones de tipo javascript para obtener los números de línea, esto es demasiado trabajo y se invierte mucho tiempo en algo que no es el objeto e la publicación, en ese caso que se debe usar GeSHi para obtener un resultado como este:

int main()
{
   printf("Hola Mundo"):
   return 0;
}

utilizando solo un par de líneas en php.
Infortunadamente por diferentes razones, seguramente de seguridad, WordPress no permite utilizar php dentro del código HTML de cada articulo publicado… mala suerte.

Sin embargo WordPress permite incorporar plugins fácilmente y afortunadamente ya alguien se tomo el trabajo de hacer un plugin de Geshi para WordPress, dicho plugin se puede descargar en esta página: Click!

Gracias a ese plugin es muy sencillo utilizar Geshi en WordPress y una vez activado basta con utilizar de la manera habitual el tag <code> para obtener resultados; para seleccionar el lenguaje del codigo fuente se puede usar el atributo lang:

<code lang="C">
int main()
{
  printf("Hola Mundo"):
  return 0;
}
</code>

Para habilitar los números línea en el plugin basta con adicionar unas líneas al comienzo del archivo geshi.php (el del plugin), este es un ejemplo de ello, este código (el cual usa esta pagina) lo inserte en le línea 39:

$geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 5);
$geshi->set_overall_style('background-color: #ffffff; font-size:small; overflow:auto;');
$geshi->set_line_style('color: #000080;', 'color: #000000; font-weight:bold;');
$geshi->set_code_style('background-color:#ffffff; color: #000000; font-weight:normal; size:inherit');

Eso es todo y es muy sencillo, saludos.

Juan Carlos Ruiz Pacheco
Ingeniero de Sistemas

Bookmark and Share

« Previous Entries