gpt4 book ai didi

IIS ApplicationPool 用户的 USERPROFILE/TEMP 值不正确

转载 作者:行者123 更新时间:2023-12-05 05:21:54 26 4
gpt4 key购买 nike

我遇到了最初由 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\[wrong-user]\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

最佳答案

问题最终是 setProfileEnvironment,它为每个应用程序池的工作进程隔离环境变量,在 system.applicationHost/applicationPools 上被设置为 false/applicationPoolDefaults 尽管它 having a default value of true according to the documentation .由于没有应用程序池覆盖它,它们都收到相同的值,因此共享公共(public)环境变量。

我不知道它是如何设置为 false 的,也不知道共享的 USERPROFILE 环境变量是如何设置为一个应用程序池而不是另一个,而是设置默认值回到 true 解决了这个问题。

是这个question/answer这帮助我找到了原因,尽管问题有所不同。

关于IIS ApplicationPool 用户的 USERPROFILE/TEMP 值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41797972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com