Introducción a C#
Por Nacho Cabanes, versión 0.93 de 16-abr-2010


(Nota: Estás viendo una versión del curso antigua, creada en 2009. Es recomendable que sigas la versión 2015, mucho más actualizada, con contenidos más detallados, más ejemplos y más ejercicios propuestos)

10.7. Llamadas al sistema

Si hay algo que no sepamos o podamos hacer, pero que alguna utilidad del sistema operativo sí es capaz de hacer por nosotros, podemos hacer que ella trabaje por nosotros. La forma de llamar a otras órdenes del sistema operativo (incluso programas externos de casi cualquier tipo) es creando un nuevo proceso con "Process.Start". Por ejemplo, podríamos lanzar el bloc de notas de Windows con:

Process proc = Process.Start("notepad.exe");  

En los actuales sistemas operativos multitarea se da por sentado que no es necesario esperar a que termine otra la tarea, sino que nuestro programa puede proseguir. Si aun así, queremos esperar a que se complete la otra tarea, lo conseguiríamos con "WaitForExit", añadiendo esta segunda línea:

proc.WaitForExit();

10.8. Datos sobre "el entorno"

La clase "Environment" nos sirve para acceder a información sobre el sistema: unidades de disco disponibles, directorio actual, versión del sistema operativo y de la plataforma .Net, nombre de usuario y máquina, carácter o caracteres que se usan para avanzar de línea, etc:

string avanceLinea = Environment.NewLine;
Console.WriteLine("Directorio actual: {0}", Environment.CurrentDirectory);
Console.WriteLine("Nombre de la máquina: {0}", Environment.MachineName);
Console.WriteLine("Nombre de usuario: {0}", Environment.UserName);
Console.WriteLine("Dominio: {0}", Environment.UserDomainName);
Console.WriteLine("Código de salida del programa anterior: {0}", Environment.ExitCode);
Console.WriteLine("Linea de comandos: {0}", Environment.CommandLine);
Console.WriteLine("Versión del S.O.: {0}", 
    System.Convert.ToString(Environment.OSVersion));
Console.WriteLine("Version de .Net: {0}", Environment.Version.ToString());
String[] discos = Environment.GetLogicalDrives();
    Console.WriteLine("Unidades lógicas: {0}", String.Join(", ", discos));
Console.WriteLine("Carpeta de sistema: {0}", 
    Environment.GetFolderPath(Environment.SpecialFolder.System));