.Net Screensaver找不到配置文件

时间:2011-10-18 18:44:31

标签: .net windows-7 screensaver

我在C#和Windows Forms中编写了一个屏幕保护程序。为了测试,我一直懒惰,只使用配置文件进行所有设置(还没有设置对话框),但是当Windows运行屏幕保护程序时程序似乎无法找到或读取配置文件。

当我使用预览按钮或以任何方式手动运行它时它会起作用,只有当它达到屏幕保护程序超时时它才能找到配置文件。

让它记录AppDomain.CurrentDomain.SetupInformation.ConfigurationFile它返回短名称:C:\Windows\System32\MYSCRE~1.config 应该在哪里C:\Windows\System32\MyScreenSaverName.scr.Config

所以我猜测问题是它无法找到带有短名称路径的配置文件。

不确定是否由于Windows 7运行屏幕保护程序的系统帐户,或者其他方式如何运行。任何信息都会有所帮助,谢谢。

编辑:尝试找出任何差异:

  1. 我能找到的唯一区别是当Windows运行屏幕保护程序时Environment.CommandLine返回C:\Windows\system32\MYSCRE~1.SCR /s,但是当我运行屏幕保护程序时它具有正常路径
  2. Process.GetCurrentProcess().StartInfo下的所有内容都相同
  3. WindowsIdentity.GetCurrent().Name是我的帐户名称
  4. 看看其他问题,似乎User32是启动屏幕保护程序的,所以我认为它必须是如何启动scr进程。

    解决方法:将.scr文件重命名为8个字符或更少,使其正常工作。所以现在有用,仍然想知道为什么会存在这个问题。

1 个答案:

答案 0 :(得分:1)

编辑:哎哟......我注意到这已经太晚了,这是一个1岁的问题....好吧也许有人可以找到这个有用的。


你确定文件系统不是fat / fat32而不是ntfs吗?

也许这是从旧的fat / fat32格式系统升级的Win7? (所以fs没有升级)?

也许我错了,只是我想看到短名称。我最近在c#中进行了一个屏幕保护程序项目,我没有遇到任何问题......从很久以后我就没有看到短名称......

您应该从磁盘管理中看到fs类型。 做一些研究我也得到了这个,检查FUTIL.EXE是否可以提供帮助,那里有一个好奇的“disable8dot3”选项:

http://commandwindows.com/fsutil.htm