windows service 之访问权限

        最近写了一个关于从局域网的算机上下载文件的winodws service,最初认为应该没什么大的问题。通过本地的调试也没发现问题。但是当我把程序发布后发现服务报错“访问路径被拒绝”,我的第一感觉,肯定是网络文件夹访问权限问题。那好吧,就用个最傻的方法把文件夹的权限设置成everyone.但是,我把服务跑起来后发现根本就不理你,还是报同样的错误。难道是下载文件的模块出错了?后来我把下载模块放到一个控制台程序和一个web页面中,都顺利通过。真是搞不懂,后来到网上搜一下看到思归老大的回复,是 windows service 的帐户没有权限访问网络资源。于是,我把服务的账号设置为 NetworkService,在调试果然ok了。老大就是老大,厉害!但是又有了新的问题,我的写服务日志的功能失效了。原因在哪呢?是应为我的原来的service 账号是 LocalSystem,service 可以找到本地文件“ C:\DownLoadFileLog.txt "

   private   void  AddTextLine( string  line)
        {
            
try
            {
                FileStream fs 
=   new  FileStream( @" C:\DownLoadFileLog.txt " , FileMode.OpenOrCreate, FileAccess.Write);

                StreamWriter m_streamWriter 
=   new  StreamWriter(fs);

                m_streamWriter.BaseStream.Seek(
0 , SeekOrigin.End);

                m_streamWriter.WriteLine(line 
+   " \r\n " );

                m_streamWriter.Flush();

                m_streamWriter.Close();

                fs.Close();
            }
            
catch  (Exception ex)
            {

            }
        }

而现在我把它改为 NetworkService, 它当然不知道C:\DownLoadFileLog.txt 在那里了。那把它改成你的网络目录并设置为共享就ok了!
如”//192.168.8.188/share/DownLoadFileLog.txt/“。

你可能感兴趣的:(windows)