好的,这是我的OnStart
方法
File.CreateText("test.txt");
StreamWriter write = File.AppendText("test.txt");
write.WriteLine("Hello world, the service has started");
write.Flush();
write.Close();
我已成功安装该服务。但是,当我开始时,我收到服务启动然后停止的消息。当我检查事件查看器时,它给了我这个
Service cannot be started. System.IO.IOException: The process cannot access the file 'C:\Windows\system32\test.txt' because it is being used by another process.
好的,这里发生了什么。因为ProcessInstaller设置为LocalSystem,所以我认为它不是一个权限问题。
答案 0 :(得分:7)
您不需要使用第一个File.CreateText
语句。这将在文件上创建一个未关闭的流编写器。
您的File.AppendText尝试在同一文件上创建新的StreamWriter,因此您会收到File in use
错误。
此外,正如MSDN所说,如果文件不存在,您的文件将被创建。
如果path指定的文件不存在,则创建该文件。如果文件存在,则对StreamWriter的写操作会将文本附加到文件
答案 1 :(得分:5)
你可以这样使用
string path = @"path\test.txt";
if (!File.Exists(path))
{
// Create a file to write to.
using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine("Hello world, the service has started");
}
}
答案 2 :(得分:3)
我认为一行代码就足够了。
File.AppendAllText(@"path\test.txt", "Hello world, the service has started");
将指定的字符串追加到文件中,如果该文件尚不存在,则创建该文件。
答案 3 :(得分:0)
您应该尝试使用该文件的完整路径,Windows服务在C:\ Windows \ System32文件夹中运行
string fileName="E:\\Service\\file.txt"
File.Create(file);