如何设置windows服务以及web Service服务的访问权限

      如果你的软件需要访问本地的文件或文件夹,并进行相关的操作时,那么在Windows Service2003系统中部署时,总是碰到一些莫名其妙的错误,明明在其他地方可以运行,一部署后,就是不能运行,跟踪调试时,才发现原来是权限的问题。

设置windows服务的访问权限

      如果你的程序里面有一个windows服务,而且还要访问本地的文件,那么你需要为windows服务的用户设置对这个文件的访问权限。在 Windows 操作系统中,每个服务都运行在一个用户帐户安全上下文中。你可以在“计算机”—“管理”—“服务”里面找到你的服务,然后右键“属性”,切换到“登录”选项卡,你就可以看到你的服务是运行在哪个账户上的。

一般自己创建的服务都是AUTHORITY\LocalService这个账户。

clip_image002

   像Sql Server是运行在NetworkService账户上的

clip_image004

(更多关于windows服务用户账户,可以参考这篇文章Windows服务用户账户)。

      找到了这个用户就好办了,现在我们找到在Windows服务里面会访问的那个本地文件夹。比如,你在程序里面会操作C:\新建文件夹,那么你就把这个文件夹选中,右键“属性”——“安全”

clip_image006

      一看,上面没有LocalService这个用户,没关系,点击“添加”

clip_image008

      点击“高级”

clip_image010

     点击“立刻查找”

clip_image012

       是不是看到了这个用户。选中它。点击确定,回到第一窗体上。

clip_image014

      选中这个用户,为它赋予权限,你可以根据实际需要赋予相应的权限。

clip_image014[1]

      Ok,这样就设置好了,你再通过Windows服务来访问这个文件,不管对它进行什么操作都不会有权限的问题了。

设置WebService的访问权限

       如果你的程序会通过Web Service来访问本地的文件夹,那么也需要设置权限。Web Service也有一个用户,这个用户默认的就是NetWork Service用户。

       设置的步骤与上面的类似,也是找到那个文件夹,然后查找到这个用户,如下图,然后点击确定,最后赋给它相应的操作权限。

clip_image016

      设置完毕后,就可以顺利的访问了。

      如果你嫌麻烦,你可以选中那个文件夹,然后给它的EveryOne用户赋予所有的权限,那么不管是Windows服务,还Web Service都可以进行访问,不过这样可能会带来安全问题.

原文地址:https://www.cnblogs.com/xiaoxiangfeizi/p/2454713.html