gpt4 book ai didi

php - 如何在 Windows 下的 PHP 中获取*任意*(即不是当前)用户的主目录?

转载 作者:可可西里 更新时间:2023-11-01 11:53:09 25 4
gpt4 key购买 nike

有什么办法可以在Windows下的PHP中获取用户名指定的用户的主目录?

我知道如何获取当前 用户的主目录(通过 HOMEDRIVE、HOMEPATH 和 HOMESHARE 环境变量)。但是,当您只知道用户名时,对于任意用户呢?

换句话说,什么相当于 Windows 下的 ~username

最佳答案

我认为唯一可能的答案是“不能”,原因如下:

  • ~username具有 Windows 中根本不存在的语义;没有单一的“主”目录,而是用于特定目的的各种不同的目录。其中许多可以由系统管理员或最终用户重新定位,并且可能需要在非英语配置中进行本地化。

    (请特别注意,即使在处理当前用户时,也很少有情况会将文件放在用户的配置文件目录中,或者放在相对于该目录的任何固定路径中。例如,某些应用程序写入 <userprofile>\Documents<userprofile>\AppData,结果是如果相关文件夹具有本地化名称或已被重定向或重新定位,则行为不正常。)

  • 即使在最简单的情况下,如果没有用户的安全 token ,也无法查找用户个人资料或任何用户文件夹的位置,要获得用户密码或现有的在用户上下文中运行的进程。 (这是一个善意的谎言:实际上,如果您拥有管理员权限,可以伪造一个 token ,但是这种努力是不成比例的,并且不清楚伪造的 token 在这种情况下能否可靠地工作无论如何。)

  • 如果该文件夹在网络上,您可能无法访问它,即使您可以找到它。

在特定情况下,可能会有一些有意义的方法,例如创建您自己的目录树或要求每个帐户都配置一个遗留(“网络用户”或 NT 域样式)主目录。对于通用库,这可能不是一个好主意,但如果您认为值得,您可以提供一个函数,允许程序员显式打开此行为(例如,可能使用可配置的目录根)。

关于您关于抛出异常的评论:请记住在 Windows 中 ~是可以出现在实际文件名或相对路径开头的合法字符。因此,根据上下文,最好不要赋予它任何特殊含义。

关于php - 如何在 Windows 下的 PHP 中获取*任意*(即不是当前)用户的主目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24528596/

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