最近在部署项目到服务器上的时候报了一个错误,错误信息如下:
编译器错误信息: CS0016:未能写入输出文件: '*:\WINDOWS\\Framework\v1.1.4322\Temporary Files\*\*.dll'--拒绝访问."
百度都说是因为权限的问题,但由于服务器已经加上权限控制,不允许添加新的用户权限,因而只能另选他法。
最终的解决方法为:将程序池的标识改为"LocalSystem"
那这个标识列是如何使用的呢,请看下文:
1.LocalSystem (本地系统):
该账户具有相当高的权限。
首先,该账户也隶属于本地Administrators用户组,因此所有本地Administrators用户能够进行的操作该账户也能够进行,
其次,该账户还能够控制文件的权限(NTFS文件系统)和注册表权限,甚至占据所有者权限来取得访问资格。
如果机器处于域中,那么运行于LocalSystem账户下的服务还可以使用机器账户在同一个森林中得到其他机器的自动认证,
最后一点就是运行于LocalSystem下的进程能够使用空会话(nullsession)去访问网络资源。
而且,其他一些Windows 用户模式下的核心组件也运行于该账户下,例如system32\Smss.exe 等。
需要注意的是,运行于此账户下的进程使用的是HKEY_USERS\.Default 账户配置,因此它不能够访问其他账户的配置。
举例来说,以LocalSystem账户运行的服务主要有:WindowsUpdateClient、Clipbook、Com+、DHCPClient、Messenger
Service、TaskScheduler、ServerService、WorkstationService,还有WindowsInstaller。
workService(网路服务):
该账户也是为了使用机器账户在网络上的其他计算机上认证而设定的。但是他没有LocalSystem那么多的权限。
它能够以计算机的名义访问网络资源。以这个账户运行的服务会根据实际环境把访问凭据提交给远程的计算机。
运行于此账户下的进程使用网络账户配置文件HKEY_USERS\S-1-5-20和Documents and Settings\NetworkService。
举例来说,以NetworkService账户运行的服务主要有:DistributedTransactionCoordinator、DNSClient、
PerformanceLogsandAlerts,还有RPCLocator。
3.LocalService(本地服务):
LocalService账户是预设的拥有最小权限的本地账户,并在网络凭证中具有匿名的身份。
运行于此账户下的进程和运行于NetworkService账户下的进程的区别
在于运行于LocalService账户下的进程只能访问允许匿名访问的网络资源。
运行于LocalService下的账户使用的配置文件是HKU\S-1-5-19和DocumentsandSettings\LocalService。
举例来说,以LocalService账户运行的服务主要有:Alerter、RemoteRegistry、SmartCard、SSDP,还有WebClient。
4.ApplicationPoolIdentity
这是从IIS 7.5之后新添加的Built-in account,是IIS创建新application pool时默认选择的运行帐号。该帐号在启动Application Pool是启动一个虚拟帐号,虚拟帐号名与Application Pool同名,在用户管理中找不到虚拟帐号,但在Task Manager中可以看到w3wp.exe运行在该虚拟帐号下。最后如果想给该虚拟帐号赋予权限,需要赋给IIS AppPool\AppPoolName,取代AppPoolName为Application Pool名称。
参考链接:
/jsjyuchengyong/article/details/7766669
/jfzhu/p/4067297.html
如果觉得《IIS应用程序池标识的权限说明》对你有帮助,请点赞、收藏,并留下你的观点哦!