gpt4 book ai didi

c# - 如何从另一个目录中找到 C# 中的主文件夹?

转载 作者:行者123 更新时间:2023-12-04 18:44:59 25 4
gpt4 key购买 nike

我已经使用 Ubuntu 16.04 LTSnginx 服务器上部署了一个 .NET Core Web 应用程序。

我想找到这个目录 :

# Location source code
/home/user-0123456/webapp

从这个位置:
// Location compiled code and source to outside world
/var/webapp

在这种情况下,user-0123456 已修复,但该修复应该是通用的。因此,即,将来可能会有所不同 - 但您可以假设总会有一个用户。

我确实遇到了 this 帖子,但是这两行:
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
Environment.GetFolderPath(System.Environment.SpecialFolder.Personal)

返回 /var/www 而不是 /home/user-0123456/webapp

问题

那么如何从另一个路径中的主文件夹中找到我的 'webapp'-dir 的根目录?

最佳答案

很简单,您可以通过以下方式获取 HOME 目录:

System.Environment.GetEnvironmentVariable("HOME");

但是,如果您的应用程序在帐户 www-data 下运行,“home”将是用户 www-data 的主目录,而不是您当前登录的用户...

如果你想获取 web 应用程序的根目录,那就是
System.IO.Path.GetDirectoryName(typeof(Program).Assembly.Location);

但是如果你想将/var/xyz 中的目录映射到/home/user-123/xyz,那么你可以这样做:
string user = System.Environment.GetEnvironmentVariable("USER");
string app = System.IO.Path.GetDirectoryName(typeof(Program).Assembly.Location);
app = app.Substring("/var/".Length);
string sourceDir = System.IO.Path.Combine("/home", user, app);

如果您确实需要另一个用户的主目录,这就是您通过用户名获取它的方式:
string username = "user-123";
Mono.Unix.Native.Passwd pwd = Mono.Unix.Native.Syscall.getpwnam(username);
// pwd.pw_uid
string dir = pwd.pw_dir;
System.Console.WriteLine((dir));

最后一个需要为 .NET-Core/NetStandard2.0 编译的 Mono.Posix 以及 mono.posix 包装其 Linux 系统调用的 native 库。

关于c# - 如何从另一个目录中找到 C# 中的主文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50686340/

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