He escrito un protector de pantalla en C# y Windows Forms. Para la prueba de que he sido perezoso y sólo utiliza el archivo de configuración para todos mis ajustes (no hay diálogo de configuración aún), pero el programa parece ser incapaz de encontrar o leer el archivo de configuración cuando Windows se ejecuta el protector de pantalla..Net salvapantallas no encuentra el archivo de configuración
funciona cuando se utiliza el botón de vista previa o bien puede hacerlo de forma manual en cualquier forma, es solo cuando se golpea el tiempo de espera de protector de pantalla que no es capaz de encontrar el archivo de configuración.
Tener que ingrese AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
Devuelve el nombre corto: C:\Windows\System32\MYSCRE~1.config
donde debe estar C:\Windows\System32\MyScreenSaverName.scr.Config
así que supongo que el problema es que no puede encontrar el archivo de configuración con el nombre corto trayecto.
No estoy seguro si es debido a la cuenta de sistema que ejecuta Windows 7 protectores de pantalla debajo, o algo más sobre la forma en que se ejecute. Cualquier información sería útil, gracias.
Editar: Tratando de encontrar las diferencias:
- única diferencia que puedo encontrar es que
Environment.CommandLine
vuelveC:\Windows\system32\MYSCRE~1.SCR /s
cuando Windows se ejecuta el protector de pantalla, pero tiene la trayectoria normal cuando lo ejecuto - Todo bajo
Process.GetCurrentProcess().StartInfo
es el mismo WindowsIdentity.GetCurrent().Name
es mi nombre de cuenta
En cuanto a otras cuestiones, parece que es lo que comienza User32 los protectores de pantalla, así que estoy pensando que tiene que ser algo sobre la forma en que se pone en marcha el proceso de SCR.
Trabajo alrededor: Renombrar mi archivo .scr para tener 8 caracteres o menos permite que funcione correctamente. Así que eso funciona por ahora, aún me encantaría saber por qué existe este problema.
que estoy experimentando el mismo problema. Pero la solución alternativa también funciona para mí ... – Jan
¿Porque el código que ejecuta los protectores de pantalla todavía tiene la limitación de 8 caracteres que tenía DOS/Windows antiguo? Me gusta C: \ Progra ~ \ Así que si llama al Dominio de aplicación y cambia el archivo de configuración a "a.config" quizás funcione sin cambiar el nombre del archivo a menos de 8 símbolos. Me gusta: AppDomain.CurrentDomain.SetData ("APP_CONFIG_FILE", "c: \\ this_is_a_long_config_file.config"); NOTA: Esta es una suposición descabellada y es por eso que la agregué como comentario y no como respuesta. –