以本地管理员身份运行的服务始终写入sysWOW64

时间:2014-02-17 16:11:20

标签: vb.net service

我有一个用VB.NET编写的服务,该服务在本地系统帐户下运行。

我使用以下代码写入日志文件:

 Dim logDirectory As String = Settings.baseDirectory
 If Settings.loggingDirectory <> "\" Then
       logDirectory &= Settings.loggingDirectory
 End If
 moFileStream = New FileStream(logDirectory & "Log.txt", FileMode.OpenOrCreate, FileAccess.Write)
 moStreamWriter = New StreamWriter(moFileStream)
 moStreamWriter.BaseStream.Seek(0, SeekOrigin.End)

 moStreamWriter.Write(Now.ToLongDateString & vbTab & Now.ToLongTimeString & vbTab & sTekst & ControlChars.NewLine)
 moStreamWriter.Flush()

其中baseDirectory和loggingDirectory都是从配置文件中读取的参数。这些是正确读取的,当我调试时,logDirectory保持正确的位置。

但是当服务写入日志文件时,它总是写入sysWOW64。我已在具有该文件夹的多个权限的服务器计算机上测试过此。甚至给了每个人完整的权限,但由于某种原因,它继续写入sysWOW64。

有没有人知道这可能是什么?

2 个答案:

答案 0 :(得分:1)

首先,关闭StreamWriter

其次,尝试在moFileStream = New FileStream行上设置一个断点,并检查logDirectory在运行时等于什么。

另外,值得一提的是,您并不需要使用额外的FileStream。您可以在创建新StreamWriter时指定路径。请参阅:http://msdn.microsoft.com/en-us/library/f5f5x7kt(v=vs.110).aspx

答案 1 :(得分:0)

filestreamstreamwriter是在OnStart创建的。 由于某种原因,这使服务无法写入日志文件。