2011-03-22 11 views
21

Duplicar posibles:
How to put exe file in windows StartupCómo hacer un comienzo exe en el inicio de Windows

Supongamos que yo he construido una aplicación en C#, una vez que lo instalo, quiero que se ejecute en segundo plano cada vez que Windows se inicia, o puede decir que un usuario inicia sesión en su cuenta de Windows. ¿Hay alguna manera de que pueda hacer eso? ¿Excepto escribir un servicio de Windows?

La aplicación muestra básicamente mensajes cuando un determinado evento se dispara Gracias

+0

Posible duplicado http://stackoverflow.com/questions/3012151/how-to-put-exe-file-in-windows-startup – MUS

+1

@GSGuy No estoy de acuerdo ya que la otra pregunta está directamente relacionada con WPF. – Aidiakapi

+0

Es un duplicado, pero esta pregunta tiene mejores respuestas. – AndrewS

Respuesta

54

Agregar al acceso directo a la carpeta de inicio de Windows:

Environment.GetFolderPath(Environment.SpecialFolder.Startup) 

o añadir a registro, algo como esto:

RegistryKey add = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); 
add.SetValue("Your App Name", "\"" + Application.ExecutablePath.ToString() + "\""); 

puede cambiar CurrentUser a LocalMachine si desea que se ejecute con cada usuario. Gracias a Aidiakapi.

+16

Tenga en cuenta que puede cambiar el Registry.CurrentUser a Registry.LocalMachine para habilitarlo para cada usuario. +1 por ejemplo código. Otra nota: Puede usar: '@" SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run "' en lugar de: '" SOFTWARE \\ Microsoft \\ Windows \\ CurrentVersion \\ Run "' para anular el escape del '\' personaje. – Aidiakapi

+0

@Badr ... Perdóneme por mi ignorancia, tengo que poner las líneas de código mencionadas, en mi código de aplicación C# ... Estoy perdido: S. ¿Podré verificar que el exe en realidad comenzará en el inicio de Windows? – nightWatcher

+0

WPF no tiene propiedad ExecutablePath. –

13

Esto se puede hacer mediante el registro de Windows. Te recomiendo que verifiques estas claves de registro.

HKLM\Software\Microsoft\Windows\CurrentVersion\Run 
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce 
HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices 
HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce 
HKCU\Software\Microsoft\Windows\CurrentVersion\Run 
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce 
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnceEx 
+0

+1 Para el uso de registro, mucho más profesional en mi opción que usar la carpeta de inicio de Windows. – Aidiakapi

+1

Gracias Aidiakapi: D y ... ¿Alguna razón para el voto a favor recibido? – Jonathan

+1

Probablemente, porque quería votos mientras estuvo antes. Creo que StackOverflow debe deshabilitar el voto en las preguntas que ha respondido usted mismo. – Aidiakapi

2

se puede inscribir su solicitud en el registro para ejecutarse en el arranque en

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
o
HKEY_CURREN_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

o usted podría agregarlo a la carpeta de inicio del sistema.

Estas son probablemente las opciones más comunes/más fáciles si no desea escribir un servicio.

0

Puede escribir el Path al ejecutable en el Registry

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 

y va a ejecutarse cada vez que se inicia Windows.

0

Puede poner un acceso directo a la aplicación en C:\Users\@[email protected]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup.

¿Está utilizando Visual Studio Setup Project? En caso afirmativo, puede establecer el acceso directo directamente desde allí.

0

Bueno esto realmente suena como usted debe utilizar un "servicio de Windows".

Existen otras opciones, como incluir un acceso directo al archivo EXE en la carpeta "Inicio" en el menú Programas ("Todos los usuarios" si desea que se ejecute para todos los usuarios de ese sistema).

Otra opción sería usar el registro de Windows.Se podría añadir una entrada a "Ejecutar", que apunta a la exe:

* HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run 
* HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 
* HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce 
* HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce 
+2

No debería ser un servicio si muestra mensajes; los servicios deben ser no interactivos. –

1

La manera más fácil es ponerlo o un acceso directo a ella en %userprofile%\Start Menu\Programs\Startupdirectory o %allusersprofile%\Start Menu\Programs\Startup

las claves de registro HKLM\Software\Microsoft\Windows\CurrentVersion\Run (todos los usuarios) y HKCU\Software\Microsoft\Windows\CurrentVersion\Run (usuario actual) serán también sirven.

lo instala como un servicio es a menudo un buen enfoque, pero no si vas a ser interactivo como usted dice.

0

Dado que nadie más lo ha mencionado, voy a señalar que también se puede lograr esto mediante una tarea programada que está disparador es 'Al iniciar el sistema'. Sin embargo, no lo he intentado con una aplicación que necesita interacción con la interfaz de usuario: funciona para un proceso en segundo plano, pero sospecho que no funcionaría con algo que necesita un contexto de escritorio (ya que no hay uno hasta que el usuario inicie sesión). en).

Cuestiones relacionadas