我遇到了一个问题,最初是通过Microsoft.CSharp.CSharpCodeGenerator
抛出UnauthorizedAccessException: Access to c:\Users\[wrong-user]\AppData\Local\Temp
接收“拒绝访问”错误尝试写入不同的 IIS AppPool 用户的临时目录而暴露的。
我有另一个应用程序实际上作为[wrong-user]
AppPool 运行,并且该应用程序确实可以工作。但是,这是有道理的,因为它具有对其自己的用户目录的写入权限。
我已将错误范围缩小到%USERPROFILE%
返回不同 IIS APPPOOL 用户的路径这一事实,即使Environment.GetFolderPath(SpecialFolder.UserProfile)
返回了正确的路径。
如果我枚举Environment.GetEnvironmentVariables(User)
,我得到:
- 路径 - C:\Users\[错误用户]\AppData\Local\Microsoft\WindowsApps;
- TEMP - C:\Users\[错误用户]\AppData\Local\Temp
- TMP - C:\Users\[错误用户]\AppData\Local\Temp
此外,手动访问用户的环境变量通过HKEY_USERS/[SID]/Environment
确认它只是%USERPROFILE%
不正确:
- 路径 - %USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
- TEMP - %USERPROFILE%\AppData\Local\Temp
- TMP - %USERPROFILE%\AppData\Local\Temp