Reniciar windows desde c#

07/01/2008 - 09:16 por Andres Collado | Informe spam
Hola a todos. ¿como puedo reniciar windows desde c#?
Gracias de antemano.

Preguntas similare

Leer las respuestas

#6 RFOG
07/01/2008 - 12:25 | Informe spam
En Mon, 07 Jan 2008 09:16:02 +0100, Andres Collado
escribió:

Hola a todos. ¿como puedo reniciar windows desde c#?
Gracias de antemano.



Hecho.

Joer con el tipo de proyecto construyendo bajo un Vista x64...

En las opciones de proyecto te ajustas el tipo de plataforma (ahora, sin
tocar nada, está todo en x86) y la versión del .NET que quieras y
recompilas (ojo, hay que ajustarlo en los dos proyectos). En el raíz del
zip tienes el ensamblado ya hecho por si no quieres complicarte la vida.

De todos modos, el proyecto sirve para mostraros cómo hacer interop
C++/CLI y lo fácil que es frente al de atributos del C#. Es decir, a veces
podría ser interesante hacerse un ensamblado en C++/CLI y luego usarlo en
C# en lugar de hacer toda la parafernalia de los atributos.

public enum ShutdownAction
{
Logoff=0x00,
PowerOff=0x02,
Reboot=0x08,
RestartApps=0x40,
};

using System;
using zxShutdown;

namespace textShutdown
{
class Program
{
static void Main(string[] args)
{
if (Shutdown.SystemShutdown(ShutdownAction.Logoff))
Console.WriteLine("Vamos a hacer un logoff");
else
Console.WriteLine("No se pudo hacer un logff");
}
}
}

El uso es muy fácil: Se hace una llamada a Shutdown.SystemShutdown()
pasando el enum deseado.

No olvideis añadir la referencia zxShutdown en la lista de referencias.

La solución se puede bajar de aquí:
http:/rfog.cmact.com/ProyectosDEMO/zxShutdown.zip

Ya haré una entrada para el blog.
Microsoft Visual C++ MVP
==Mi blog sobre programación: http://geeks.ms/blogs/rfog
Mi blog sobre literatura: http://rfog.blogsome.com
Libros, ciencia ficción y programación
La luciérnaga brilla cuando vuela, la mente también.
Respuesta Responder a este mensaje
#7 Andres Collado
07/01/2008 - 12:26 | Informe spam
Gracias, estoy intentando pasar tu código a c++/cli y no para de darme errores.

"RFOG" wrote:

Vale, no es una tarea trivial.

Si te esperas un poco te pongo el reboot en un ensamblado compatible con
C#...


En Mon, 07 Jan 2008 11:30:35 +0100, RFOG
escribió:

> Es que necesitas ajustar varios tokens de seguridad antes de poder hacer
> esa llamada.
>
> En mi blog tienes un código en C++ que puedes meter en un ensamblado
> C++/CLI y luego usarlo desde C#.
>
> http://geeks.ms/blogs/rfog/archive/...e-net.aspx
>
>
>
> En Mon, 07 Jan 2008 11:15:01 +0100, Andres Collado
> escribió:
>
>>
>>
>> "Octavio Hernandez" wrote:
>>
>>> Aquí:
>>>
>>> http://www.thescripts.com/forum/thread559878.html
>>>
>>> tienes dos vías distintas:
>>> a) ejecutando el comando SHUTDOWN del sistema operativo,
>>> b) llamando a la función ExitWindows_Ex de la API de Windows.
>>>
>>> Slds - octavio
>>>
>>>
>>
>> Lo estoy haciendo asi:
>>
>> [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError =
>> false)]
>> static extern int ExitWindowsEx(IntPtr lParam,IntPtr
>> dwReserved);
>>
>> ExitWindowsEx((IntPtr)2, (IntPtr)0);
>>
>> Pero no me hace nada.
>>
>
>
>



Microsoft Visual C++ MVP
==> Mi blog sobre programación: http://geeks.ms/blogs/rfog
Mi blog sobre literatura: http://rfog.blogsome.com
Libros, ciencia ficción y programación
> La luciérnaga brilla cuando vuela, la mente también.

Respuesta Responder a este mensaje
#8 RFOG
07/01/2008 - 12:32 | Informe spam
Ese código ya es C++/CLI. Bueno, no, pero compila como C++/CLI sin ningún
problema, el tema es que hay que poner un envoltorio .NET "puro" para que
C# pueda hacer la llamada. Mira mi último mensaje.

En Mon, 07 Jan 2008 12:26:03 +0100, Andres Collado
escribió:

Gracias, estoy intentando pasar tu código a c++/cli y no para de darme
errores.

"RFOG" wrote:

Vale, no es una tarea trivial.

Si te esperas un poco te pongo el reboot en un ensamblado compatible con
C#...


En Mon, 07 Jan 2008 11:30:35 +0100, RFOG
escribió:

> Es que necesitas ajustar varios tokens de seguridad antes de poder
hacer
> esa llamada.
>
> En mi blog tienes un código en C++ que puedes meter en un ensamblado
> C++/CLI y luego usarlo desde C#.
>
>
http://geeks.ms/blogs/rfog/archive/...e-net.aspx
>
>
>
> En Mon, 07 Jan 2008 11:15:01 +0100, Andres Collado
> escribió:
>
>>
>>
>> "Octavio Hernandez" wrote:
>>
>>> Aquí:
>>>
>>> http://www.thescripts.com/forum/thread559878.html
>>>
>>> tienes dos vías distintas:
>>> a) ejecutando el comando SHUTDOWN del sistema operativo,
>>> b) llamando a la función ExitWindows_Ex de la API de Windows.
>>>
>>> Slds - octavio
>>>
>>>
>>
>> Lo estoy haciendo asi:
>>
>> [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError >> >> false)]
>> static extern int ExitWindowsEx(IntPtr lParam,IntPtr
>> dwReserved);
>>
>> ExitWindowsEx((IntPtr)2, (IntPtr)0);
>>
>> Pero no me hace nada.
>>
>
>
>



Microsoft Visual C++ MVP
==>> Mi blog sobre programación: http://geeks.ms/blogs/rfog
Mi blog sobre literatura: http://rfog.blogsome.com
Libros, ciencia ficción y programación
>> La luciérnaga brilla cuando vuela, la mente también.








Microsoft Visual C++ MVP
==Mi blog sobre programación: http://geeks.ms/blogs/rfog
Mi blog sobre literatura: http://rfog.blogsome.com
Libros, ciencia ficción y programación
La luciérnaga brilla cuando vuela, la mente también.
Respuesta Responder a este mensaje
#9 Andres Collado
07/01/2008 - 12:34 | Informe spam
Muchas gracias, ya estaba liado con los atributos y los permisos, uf...
Lo implemento y te cuento.

"RFOG" wrote:

En Mon, 07 Jan 2008 09:16:02 +0100, Andres Collado
escribió:

> Hola a todos. ¿como puedo reniciar windows desde c#?
> Gracias de antemano.

Hecho.

Joer con el tipo de proyecto construyendo bajo un Vista x64...

En las opciones de proyecto te ajustas el tipo de plataforma (ahora, sin
tocar nada, está todo en x86) y la versión del .NET que quieras y
recompilas (ojo, hay que ajustarlo en los dos proyectos). En el raíz del
zip tienes el ensamblado ya hecho por si no quieres complicarte la vida.

De todos modos, el proyecto sirve para mostraros cómo hacer interop
C++/CLI y lo fácil que es frente al de atributos del C#. Es decir, a veces
podría ser interesante hacerse un ensamblado en C++/CLI y luego usarlo en
C# en lugar de hacer toda la parafernalia de los atributos.

public enum ShutdownAction
{
Logoff=0x00,
PowerOff=0x02,
Reboot=0x08,
RestartApps=0x40,
};

using System;
using zxShutdown;

namespace textShutdown
{
class Program
{
static void Main(string[] args)
{
if (Shutdown.SystemShutdown(ShutdownAction.Logoff))
Console.WriteLine("Vamos a hacer un logoff");
else
Console.WriteLine("No se pudo hacer un logff");
}
}
}

El uso es muy fácil: Se hace una llamada a Shutdown.SystemShutdown()
pasando el enum deseado.

No olvideis añadir la referencia zxShutdown en la lista de referencias.

La solución se puede bajar de aquí:
http:/rfog.cmact.com/ProyectosDEMO/zxShutdown.zip

Ya haré una entrada para el blog.
Microsoft Visual C++ MVP
==> Mi blog sobre programación: http://geeks.ms/blogs/rfog
Mi blog sobre literatura: http://rfog.blogsome.com
Libros, ciencia ficción y programación
> La luciérnaga brilla cuando vuela, la mente también.

Respuesta Responder a este mensaje
#10 Andres Collado
07/01/2008 - 14:54 | Informe spam
Por fin!!!, muchas gracias por tu atención. He refrenciado tu proyecto y con
ese ensamblado ya puedo.

"Andres Collado" wrote:

Muchas gracias, ya estaba liado con los atributos y los permisos, uf...
Lo implemento y te cuento.

"RFOG" wrote:

> En Mon, 07 Jan 2008 09:16:02 +0100, Andres Collado
> escribió:
>
> > Hola a todos. ¿como puedo reniciar windows desde c#?
> > Gracias de antemano.
>
> Hecho.
>
> Joer con el tipo de proyecto construyendo bajo un Vista x64...
>
> En las opciones de proyecto te ajustas el tipo de plataforma (ahora, sin
> tocar nada, está todo en x86) y la versión del .NET que quieras y
> recompilas (ojo, hay que ajustarlo en los dos proyectos). En el raíz del
> zip tienes el ensamblado ya hecho por si no quieres complicarte la vida.
>
> De todos modos, el proyecto sirve para mostraros cómo hacer interop
> C++/CLI y lo fácil que es frente al de atributos del C#. Es decir, a veces
> podría ser interesante hacerse un ensamblado en C++/CLI y luego usarlo en
> C# en lugar de hacer toda la parafernalia de los atributos.
>
> public enum ShutdownAction
> {
> Logoff=0x00,
> PowerOff=0x02,
> Reboot=0x08,
> RestartApps=0x40,
> };
>
> using System;
> using zxShutdown;
>
> namespace textShutdown
> {
> class Program
> {
> static void Main(string[] args)
> {
> if (Shutdown.SystemShutdown(ShutdownAction.Logoff))
> Console.WriteLine("Vamos a hacer un logoff");
> else
> Console.WriteLine("No se pudo hacer un logff");
> }
> }
> }
>
> El uso es muy fácil: Se hace una llamada a Shutdown.SystemShutdown()
> pasando el enum deseado.
>
> No olvideis añadir la referencia zxShutdown en la lista de referencias.
>
> La solución se puede bajar de aquí:
> http:/rfog.cmact.com/ProyectosDEMO/zxShutdown.zip
>
> Ya haré una entrada para el blog.
> Microsoft Visual C++ MVP
> ==> > Mi blog sobre programación: http://geeks.ms/blogs/rfog
> Mi blog sobre literatura: http://rfog.blogsome.com
> Libros, ciencia ficción y programación
> > > La luciérnaga brilla cuando vuela, la mente también.
>
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida