windows service 之访问权限(有NetworkService和LocalSystem的区分)

最近写了一个关于从局域网的算机上下载文件的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/“。

http://www.cnblogs.com/peak-weng/archive/2008/07/29/1255485.html

时间: 2024-08-13 20:46:16

windows service 之访问权限(有NetworkService和LocalSystem的区分)的相关文章

设置Windows服务的访问权限

作者:beyond 默认情况下,只有管理员组成员.LocalSystem和Power Users组成员帐户才有权启动.停止服务.为了让普通用户也可以控制该服务,我们可以手动设置其访问权限.可能有些初学者会感到奇怪,怎么服务也可以设置权限?其实在Windows系统里,不仅可以对文件夹设置权限,还可以对注册表.打印机和服务等系统资源进行权限设置.然而对服务进行权限设置,没有对文件夹进行权限设置那么直观,需要借助以下两种方法: 安全配置和分析 (1)以管理员身份登录系统,在运行对话框里输入mmc并回车

关于windows service不能访问网络共享盘(NetWork Drive)的解决方案

我映射一个网络驱动器到本机的时候,发现本机的程序直接能访问读取网络驱动器,但是把本机的程序作为本机的windows服务运行的时候就不能访问了. Qt中的QDir::exist(folder)访问失败.这样导致的原因是映射网络驱动器,需要服务程序运行的权限账户和远程共享文件的机器要运行在同一个域(Domain) 下面,用PStool这个工具就可以了,它直接使用SYSTEM账户权限,来映射网络驱动器.这样,远程驱动器和本机的service就处于同一个域下了. 注意:这个是比较hack的做法,并不推荐

Android Remote Service 外部访问权限控制

<Service> 可以通过以下参数限制外部访问 android:exported="false"  //不允许其他进程访问 android:process=":remote"  //声明service独立运行进程名称 如果需要支持外部访问,但限定只有某些进程可以访问 <permission android:name="com.example.REQUEST_FINGERPRINT" android:protectionLeve

Windows Service 访问远程共享权限设置

最近为实现共享目录之间的文件同步,开发了一个Windows Service. 考虑到在拷贝过程中,如果网络忽然抽风访问不了,导致文件拷贝不完整的情况,果断抛弃.Net 自带的 COPY 方法,而使用DOS命令下的XCOPY命令. 嗯.....说干就干... XCOPY方案验证.开发.调试(在自个电脑上建了两个共享目录)....半天时间,全部搞定.貌似事情进展的太顺利了..... 既然本地调试没问题,那就部署到测试环境上吧.好吧...问题来了. 同步两个共享目录,居然失败!查看日志,XCOPY的退

Reporting Service部署之访问权限

原文:Reporting Service部署之访问权限 SQL Server Reporting Services 并非专门设计用于 Internet 报表部署方案,但是您可以成功地将 Reporting Services 放置于面向 Internet 的 Web 服务器上,   以将一般信息向广大公众传播,或者将公司保密数据向经过授权和身份验证的用户传播.            公司的一个项目中的报表准备升级到SQL Server 2005,并且其中的报表系统将使用集成在SQL Server

windows Service启动带有管理员权限的进程

事情是这样的,公司的产品有个守护进程(windows Service)需要启动产品的主程序exe,让主程序它运行为管理员权限(因为主程序会加载一个插件,插件中有列出端口监听的功能,需要由端口查找到进程PID,由进程PID查找进程名或进程镜像路径,这些对于一些特殊进程例如svchost需要有管理员权限才能查到进程名和路径).windows下的程序是不能在运行时获得管理员权限的,只能在创建进程的时候提升为管理员权限.如果是普通进程运行一个管理员权限程序,可以调用ShellExcute API.双击鼠

.NET 控制Windows文件和目录访问权限研究(FileSystemAccessRule)

前一段时间学习了.net 控制windows文件和目录权限的相关内容,期间做了一些总结.想把这方面的研究跟大家分享,一起学习.其中不免得有些用词不太标准的地方,希望大家留言指正留言,我加以修改. 首先,我们利用一个方法作为示例: /// <summary> /// 为指定用户组,授权目录指定完全访问权限 /// </summary> /// <param name="user">用户组,如Users</param> /// <par

Windows远程桌面IP地址控制访问权限

Windows远程桌面IP地址控制访问权限 1.           工作组环境 在工作组环境中,因为没有组策略服务,所以只有打开"控制台",添加"组策略对象编辑器",进行"组策略"设置. 1)  点击"开始"――"运行"――"cmd",输入"mmc",打开"控制台". 2)  点击"文件"菜单――"添加/删除管理单元

Windows azure Web 应用程序代理服务器&mdash;ADFS的extranet访问权限

Windows azure Web 应用程序代理服务器-ADFS的extranet访问权限 我们之前介绍了,在windows azure下配置联合身份验证服务,实现通过本地的Active Direcroty用户验证范根windows azure Active Direcroty服务,默认操作后,只有在同一个内部网络才能访问,那我们如果要外部访问的话,我们需要怎么做呢,当然按照常理我们需要将ADFS的相应的端口对外发布即可,比如80.443等.但是在官网的方法是我们需要单独部署一台proxy服务,