我想了解为什么我的应用程序作为本地系统帐户作为Windows服务运行无法访问使用UNCpath在另一台PC上的共享文件夹。
然而,相同的应用程序可以访问NAS设备上的共享文件夹。
更多详情:
我有一个基于UNCpath读取目录内容的Java应用程序。
当不作为Windows服务运行时,应用程序可以读取其他PC和NAS设备上的文件夹共享。
是因为NAS设备(Buffalo LinkStation)使用SAMBA? (在这里我的安静区域,但这是我能想到的唯一的东西)
如果是这种情况,是否意味着我将不得不为这个服务创build一个pipe理员用户,以使其工作而不是本地系统帐户?
我怀疑NAS设备的共享已经启用,或者计算机名称对该共享有权限。
本地系统具有networking上机器帐户的权限。 (用户和计算机都有AD帐户,是的。)有关更多信息,请参阅此链接 。
所以是的,你需要将账户COMPUTERNAME $(不pipe机器名是什么)添加到共享中,以便应用程序能够访问它。
当不作为服务运行时,应用程序在启动应用程序的用户的上下文中运行,并且将具有对用户具有的Windows共享中的文件和文件夹的任何共享和NTFS访问。 当以本地系统的身份运行服务时,应用程序将拥有对运行该服务的计算机帐户所在的Windows共享中文件和文件夹的任何共享和NTFS访问权限,因此您需要添加适当的共享和NTFS Windows服务正在运行的计算机的计算机帐户的Windows共享中的文件和文件夹的权限。