.Net Screensaver не находит файл конфигурации

Я написал хранитель экрана на C # и Windows Формы. Для тестирования я был ленив и просто использовал файл конфигурации для всех своих настроек (диалогового окна настроек пока нет), но программа, похоже, не может найти или прочитать файл конфигурации, когда Windows запускает хранитель экрана.

Это работает, когда я использую кнопку предварительного просмотра или запускаю его вручную каким-либо образом, и только когда он достигает тайм-аута заставки, он не может найти файл конфигурации.

Журнал AppDomain.CurrentDomain.SetupInformation.ConfigurationFile Возвращает короткое имя: C: \ Windows \ System32 \ MYSCRE ~ 1.config Где это должно быть C: \ Windows \ System32 \ MyScreenSaverName.scr.Config

Итак, я предполагаю, что проблема в том, что он не может найти файл конфигурации с коротким именем пути.

Не уверен, что это из-за системной учетной записи, под которой Windows 7 запускает хранители экрана, или из-за чего-то еще из-за того, как она запускается. Любая информация будет полезна, спасибо.

Редактировать: Попытка найти какие-либо различия:

  1. Единственное различие, которое я могу найти, заключается в том, что Environment.CommandLine возвращает C: \ Windows \ system32 \ MYSCRE ~ 1.SCR / s , когда Windows запускает хранитель экрана, но при запуске имеет нормальный путь
  2. Все в Process.GetCurrentProcess (). StartInfo то же самое
  3. WindowsIdentity.GetCurrent ().Имя - это имя моей учетной записи

Если посмотреть на другие вопросы, кажется, что User32 запускает заставки, поэтому я полагаю, что это должно быть что-то о том, как запускается процесс scr.

Решение: Переименование моего файла .scr на 8 или менее символов позволяет ему работать правильно. Так что на данный момент это работает, хотелось бы знать, почему существует эта проблема.

8
задан Thymine 18 October 2011 в 20:35
поделиться