Windows服务设置后无法检测到XML文件

时间:2013-03-14 19:53:00

标签: c# visual-studio-2010 windows-services windows-installer

我创建了一个Windows服务。我使用Windows安装程序设置服务。 我有一个像配置文件的XML文件。每当我通过附加调试项目调试Windows服务它工作正常。但是在安装之后我可以看到事件说无法在C:\ Windows \ system32中找到example.xml文件。这是一个重复的问题。任何人都可以告诉我这是怎么回事。还是有什么建议吗?

4 个答案:

答案 0 :(得分:2)

最有可能的文件并不在你想要的地方。

有可能你的代码在“当前工作文件夹”中查找,在VS中调试期间与应用程序相同,但是在启动时作为service / from命令行是不同的。

确保您的代码从您希望文件所在的位置(即应用程序旁边)加载文件,但不是从某个相对路径(如“myfile.xml”)加载。

答案 1 :(得分:2)

这不是安装程序问题。 Windows Services始终以System32作为当前目录启动。在启动任何服务之前,将此行添加到Program.cs中的Main()方法。

    Environment.CurrentDirectory = new FileInfo(Assembly.GetExecutingAssembly().FullName).DirectoryName;

答案 2 :(得分:1)

为什么要保存Windows文件夹中的内容?除非有真的这样做的理由,否则错误。将配置安装在运行应用程序的相同位置,并使用以下命令获取文件路径:

var folderPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var configPath = Path.Combine(folderPath, configFileName);

答案 3 :(得分:-1)

问题是您的服务未以管理员身份运行。如果该服务未以管理员身份运行,则它将无法读取system32文件夹下的文件。

更改服务属性以管理员身份运行。这应该可以解决问题。