我在C#中编写了一个屏幕保护程序,但每当我在预览模式下运行它或让它启动时,它都会引发异常。当我在Windows \ System32中双击它时它运行正常。使用Visual Studio调试器,我怀疑它没有读取应用程序的.config文件,该文件也在Windows \ System32中。
我认为当rundll32.exe执行屏幕保护程序时,app.config文件将被省略。有没有办法强迫它加载?
由于
答案 0 :(得分:2)
感谢那些推荐SysInternals的Process Monitor的人。使用它,我看到它正在寻找配置文件名的8个字母的版本。这是SCR文件的前六个字母,然后是~1.scr,因为那是进程的名称。我所要做的就是重命名文件,或者保留它的2个版本,因为我不想更改scr文件的名称。
答案 1 :(得分:1)
据我记得以前的经验,屏幕保护程序的“当前目录”设置为%userprofile%。您可以通过暂时将配置文件放入该目录来检查它是否为真。如果它恰好是真的那么你必须添加代码来从屏幕保护程序所在的目录中读取配置,而不是从当前目录中读取。
答案 2 :(得分:0)
使用Process Monitor查看屏幕保护程序尝试读取的配置文件。
答案 3 :(得分:0)
我的猜测是您的应用程序使用不同的工作目录运行。从this post (read down)开始,您似乎需要创建正常的可执行文件,重命名为* .scr,右键单击该文件并选择“install”,它将两者都移动到system32目录。
也许“安装”功能会改变您的屏幕保护程序的调用方式或它应该作为工作目录的位置。
答案 4 :(得分:0)
如果到目前为止没有任何提示可以正常工作