使用Windows服务使用C#或VB.net创建,更新,删除CSV文件

时间:2011-09-11 19:45:11

标签: c# vb.net

我正在创建一个Windows服务,以将当前用户名和登录时间保存在CSV文件中。但是当我安装服务时,文件刚刚创建,没有向其写入详细信息,并且该文件被设置为只读模式。我的代码中有什么问题?

我的代码:

   Imports System.IO
   Imports System.Text
   Imports System.DirectoryServices
   Imports System.DirectoryServices.AccountManagement
   Imports System.Diagnostics
   Public Class LoginService1

      Protected Overrides Sub OnStart(ByVal args() As String)
        Dim win As System.Security.Principal.WindowsIdentity
        win = System.Security.Principal.WindowsIdentity.GetCurrent()
        Dim Logon_UserName = win.Name.Substring(win.Name.IndexOf("\") + 1)
        Dim pc As New PrincipalContext(ContextType.Machine, My.Computer.Name)
        Dim uc As UserPrincipal = UserPrincipal.FindByIdentity(pc, Logon_UserName)
        Dim str As String = ""
        Try
           Dim sr As New StreamReader("c:\logondetails.csv")
           str = sr.ReadToEnd()
           sr.Close()
           sr.Dispose()
        Catch ex As Exception
        End Try
        Try
           Dim sw As New StreamWriter("c:\logondetails.csv")
           Str += Logon_UserName & "," & uc.LastLogon.Value.ToString
           sw.WriteLine(str)
           sw.Close()
           sw.Dispose()
        Catch ex As Exception
        End Try
   End Sub

   Protected Overrides Sub OnStop()
      ' Add code here to perform any tear-down necessary to stop your service.'
   End Sub

  End Class

1 个答案:

答案 0 :(得分:1)

有很多方法可以解决你正在做的事情。

对于1,您不需要读入整个文件以附加到它的末尾。例如

using(var stream = File.AppendText(fileName))
            {
            stream.Write(string);
            stream.Close();
            }

但是您将遇到并发访问该文件的问题。您最好使用日志框架,例如log4net或microsoft logging block,然后再使用

Logger.Info(yourstring);

并完成它。该框架将处理文件访问问题。