.Net屏幕保护程序找不到配置文件
我已经用C#和Windows窗体编写了一个屏幕保护程序。为了进行测试,我一直很懒,只是对我的所有设置使用了配置文件(还没有设置对话框),但是当windows运行屏幕保护程序时,程序似乎无法找到或读取配置文件 当我使用预览按钮或以任何方式手动运行它时,它都能工作,只有当它点击屏幕保护程序超时时,它才能找到配置文件 让它记录.Net屏幕保护程序找不到配置文件,.net,windows-7,screensaver,.net,Windows 7,Screensaver,我已经用C#和Windows窗体编写了一个屏幕保护程序。为了进行测试,我一直很懒,只是对我的所有设置使用了配置文件(还没有设置对话框),但是当windows运行屏幕保护程序时,程序似乎无法找到或读取配置文件 当我使用预览按钮或以任何方式手动运行它时,它都能工作,只有当它点击屏幕保护程序超时时,它才能找到配置文件 让它记录AppDomain.CurrentDomain.SetupInformation.ConfigurationFile它返回短名称:C:\Windows\System32\MYSC
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
,但在运行屏幕保护程序时返回的路径是正常的Process.GetCurrentProcess().StartInfo
下的所有内容都是相同的WindowsIdentity.GetCurrent().Name
是我的帐户名解决方法:将my.scr文件重命名为8个字符或更少可以使其正常工作。因此,现在这样做有效,我仍然想知道为什么会存在这个问题。编辑::哎哟。。。我注意到这是一个有一年历史的问题,太晚了。。。。也许有人会觉得这很有用
您确定文件系统不是fat/fat32而不是ntfs吗 可能是从旧的fat/fat32格式系统升级的Win7?(因此fs没有升级) 也许我错了,这只是我的猜测,看到短名称的地方。我最近在c#上做了一个屏幕保护程序项目,没有遇到任何问题。。。老实说,从古到今我都没见过短名字 您应该可以从磁盘管理中看到fs类型。 做了一些研究,我也得到了这个,检查FUTIL.EXE是否可以帮助,那里有一个奇怪的“disable8dot3”选项:
我也遇到了同样的问题。但是这种变通方法对我也适用……因为运行屏幕保护程序的代码仍然有DOS/旧Windows的8个字符的限制?与C:\Progra~\类似,如果您调用AppDomain并将配置文件更改为“a.config”,则可能在不将文件重命名为小于8个符号的情况下,该配置文件也可以工作。比如:AppDomain.CurrentDomain.SetData(“APP_CONFIG_FILE”,“c:\\this_is_a_long_CONFIG_FILE.CONFIG”);注:这是一个猜测,这就是为什么我添加它作为一个评论,而不是一个答案。