Я написал хранитель экрана на C # и Windows Формы. Для тестирования я был ленив и просто использовал файл конфигурации для всех своих настроек (диалогового окна настроек пока нет), но программа, похоже, не может найти или прочитать файл конфигурации, когда Windows запускает хранитель экрана.
Это работает, когда я использую кнопку предварительного просмотра или запускаю его вручную каким-либо образом, и только когда он достигает тайм-аута заставки, он не может найти файл конфигурации.
Журнал AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
Возвращает короткое имя: C: \ Windows \ System32 \ MYSCRE ~ 1.config
Где это должно быть C: \ Windows \ System32 \ MyScreenSaverName.scr.Config
Итак, я предполагаю, что проблема в том, что он не может найти файл конфигурации с коротким именем пути.
Не уверен, что это из-за системной учетной записи, под которой Windows 7 запускает хранители экрана, или из-за чего-то еще из-за того, как она запускается. Любая информация будет полезна, спасибо.
Редактировать: Попытка найти какие-либо различия:
Environment.CommandLine
возвращает C: \ Windows \ system32 \ MYSCRE ~ 1.SCR / s
, когда Windows запускает хранитель экрана, но при запуске имеет нормальный путь Process.GetCurrentProcess (). StartInfo
то же самое WindowsIdentity.GetCurrent ().Имя
- это имя моей учетной записи Если посмотреть на другие вопросы, кажется, что User32 запускает заставки, поэтому я полагаю, что это должно быть что-то о том, как запускается процесс scr.
Решение: Переименование моего файла .scr на 8 или менее символов позволяет ему работать правильно. Так что на данный момент это работает, хотелось бы знать, почему существует эта проблема.