我有两台装有Windows Server 2003的计算机。一台计算机在网络上有一些共享文件夹,另一台计算机有一台需要访问这些共享文件夹的Windows服务(用C#编写,在网络服务帐户下运行)。 / p>
以下代码作为登录用户正常工作,但在网络服务帐户下执行时会引发异常。
File.WriteAllText(@"C:\temp\temp.txt", File.ReadAllLines(@"\\NetworkServer\Test\test.txt")[0]);
异常消息是Logon failure: unknown user name or bad password
。如何让此代码在网络服务帐户下运行?它是Windows Server 2003中的设置,还是我需要添加一些代码才能使其正常工作?
答案 0 :(得分:3)
在网络共享上,您需要在运行该服务的服务器上为“网络服务”帐户添加权限。虽然这样可行,但@nicholas指出,这可能会为一组过多的用户提供访问共享的权限。
另一个选项,在我看来 更好的选项 ,就是创建一个域帐户,然后在该共享上授予该帐户读/写权限。然后,将服务配置为“以具有适当权限的域帐户运行”。
答案 1 :(得分:0)
Network Service
如何在网络上进行身份验证。
Network Service
帐户对本地系统的权限非常有限,它会在网络上显示计算机的凭据。因此,如果您需要访问Network Service
帐户下的网络资源(例如网络共享),则必须授予对服务正常运行的计算机帐户的访问权限。
为本地Network Service
帐户提供对网络资源的访问权限,根本无法正常工作,您将不断收到身份验证/授权错误。
答案 2 :(得分:0)
当网络服务帐户尝试访问远程服务器上的共享时,它将使用计算机帐户在网络上进行身份验证。授予权限后,该帐户将带有$后缀(例如servername$
)。
当网络服务帐户尝试访问SAME SERVER AS ASSELF上托管的共享时,计算机帐户将无法授予网络服务访问权限。在这种情况下,需要授予Network Service内置帐户对文件系统位置和共享权限的访问权限。
基本上,当您授予网络服务对共享的访问权限时,它只会影响以该身份在本地计算机上运行的服务。对于远程计算机,必须使用计算机帐户,并且不能使用计算机帐户 向网络服务授予对本地资源的访问权限。