.Net Screensaver не находит конфигурационный файл - PullRequest
8 голосов
/ 18 октября 2011

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

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

Имея это log 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().Name это имя моей учетной записи

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

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

1 Ответ

1 голос
/ 11 ноября 2012

edit : ой ... я заметил слишком поздно, что это 1-летний вопрос .... ну, может, кто-нибудь найдет это полезным в любом случае.


Вы уверены, что файловая система не FAT / FAT32 вместо NTFS?

Может быть, это Win7, обновленная со старой системы, отформатированной в fat / fat32? (и поэтому фс не были обновлены)?

Может быть, я ошибаюсь, это просто мое предположение, чтобы увидеть короткие имена на месте. Недавно я работал над проектом скринсейвера в c #, и у меня не возникло никаких проблем ... Я не вижу коротких имен с давних времен, если честно ...

Вы должны увидеть тип fs в разделе «Управление дисками». Делая некоторые исследования, я также получил это, проверьте, может ли FUTIL.EXE помочь, тут есть любопытная опция «disable8dot3»:

http://commandwindows.com/fsutil.htm

...