2011-10-18 11 views
8

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:

  1. única diferencia que puedo encontrar es que Environment.CommandLine vuelve C:\Windows\system32\MYSCRE~1.SCR /s cuando Windows se ejecuta el protector de pantalla, pero tiene la trayectoria normal cuando lo ejecuto
  2. Todo bajo Process.GetCurrentProcess().StartInfo es el mismo
  3. 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.

+0

que estoy experimentando el mismo problema. Pero la solución alternativa también funciona para mí ... – Jan

+2

¿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. –

Respuesta

1

edit: ouch ... Me di cuenta demasiado tarde de que es una pregunta de 1 año ... bueno, tal vez alguien pueda encontrar esta útil de todos modos.


¿Seguro el sistema de archivos no es la grasa/FAT32 en lugar de NTFS?

tal vez es un Win7 actualizado desde un sistema con formato viejo gordo/FAT32? (y por eso no se actualizaron)

Tal vez estoy equivocado, es solo mi suposición ver nombres cortos en su lugar. Recientemente he trabajado en un proyecto de protector de pantalla en C# y me encontré con ningún problema en absoluto ... no veo nombres cortos desde las edades para ser honesto ...

debería ver el tipo de fs Gestión del disco. Haciendo un poco de investigación yo también tengo esto, compruebe si FUTIL.EXE puede ayudar, hay una curiosa opción "disable8dot3" allí mismo:

http://commandwindows.com/fsutil.htm

Cuestiones relacionadas