【问题标题】:How do I insert a User Name info a path?如何在路径中插入用户名信息?
【发布时间】:2020-03-20 16:13:35
【问题描述】:

所以我的目标是将 UserName 字符串放入 路径 users

Here = UserName

String UserName = Environment.UserName;
Path = @"C:\Users\ Here \AppData\Local\Secret\Secret";

【问题讨论】:

  • Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

标签: c# string path


【解决方案1】:

如果只是将任意字符串与路径连接起来,您可以这样做:

var user = Environment.UserName;
var path = Path.Combine(Path.Combine(@"C:\Users", user), @"AppData\Local\Secret\Secret");

但是,正如您提到的 AppData 文件夹,您可能正在寻找 windows 结构中的一些特殊文件夹;在这种情况下,您应该通过调用Environment.GetFolderPath(Environment.SpecialFolder) 让 .NET 框架发挥作用;在我的盒子里,它返回了以下值:

AdminTools            : C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools
ApplicationData       : C:\Users\username\AppData\Roaming
CDBurning             : C:\Users\username\AppData\Local\Microsoft\Windows\Burn\Burn
CommonAdminTools      : C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools
CommonApplicationData : C:\ProgramData
CommonDesktopDirectory: C:\Users\Public\Desktop
CommonDocuments       : C:\Users\Public\Documents
CommonMusic           : C:\Users\Public\Music
CommonOemLinks        :
CommonPictures        : C:\Users\Public\Pictures
CommonProgramFiles    : C:\Program Files (x86)\Common Files
CommonProgramFilesX86 : C:\Program Files (x86)\Common Files
CommonPrograms        : C:\ProgramData\Microsoft\Windows\Start Menu\Programs
CommonStartMenu       : C:\ProgramData\Microsoft\Windows\Start Menu
CommonStartup         : C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
CommonTemplates       : C:\ProgramData\Microsoft\Windows\Templates
CommonVideos          : C:\Users\Public\Videos
Cookies               : C:\Users\username\AppData\Local\Microsoft\Windows\INetCookies
Desktop               : C:\Users\username\OneDrive\Desktop
DesktopDirectory      : C:\Users\username\OneDrive\Desktop
Favorites             : C:\Users\username\Favorites
Fonts                 : C:\WINDOWS\Fonts
History               : C:\Users\username\AppData\Local\Microsoft\Windows\History
InternetCache         : C:\Users\username\AppData\Local\Microsoft\Windows\INetCache
LocalApplicationData  : C:\Users\username\AppData\Local
LocalizedResources    :
MyComputer            :
MyDocuments           : C:\Users\username\OneDrive\Documentos
MyMusic               : C:\Users\username\Music
MyPictures            : C:\Users\username\OneDrive\Imagens
MyVideos              : C:\Users\username\Videos
NetworkShortcuts      : C:\Users\username\AppData\Roaming\Microsoft\Windows\Network Shortcuts
MyDocuments           : C:\Users\username\OneDrive\Documentos
PrinterShortcuts      : C:\Users\username\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
ProgramFiles          : C:\Program Files (x86)
ProgramFilesX86       : C:\Program Files (x86)
Programs              : C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
Recent                : C:\Users\username\AppData\Roaming\Microsoft\Windows\Recent
Resources             : C:\WINDOWS\resources
SendTo                : C:\Users\username\AppData\Roaming\Microsoft\Windows\SendTo
StartMenu             : C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu
Startup               : C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
System                : C:\WINDOWS\system32
SystemX86             : C:\WINDOWS\SysWOW64
Templates             : C:\Users\username\AppData\Roaming\Microsoft\Windows\Templates
UserProfile           : C:\Users\username
Windows               : C:\WINDOWS

如果你需要自己做:

foreach (var name in Enum.GetNames(typeof(Environment.SpecialFolder)).OrderBy(item => item))
{
    var item = Enum.Parse(typeof(Environment.SpecialFolder), name);
    var path = Environment.GetFolderPath((Environment.SpecialFolder)item);
    Console.WriteLine($"{item}: {path}");
}

无论如何,在您的具体情况下,您应该选择:

var secret = Path.Combine(Environment.GetFolderPath(
    Environment.SpecialFolder.LocalApplicationData), @"Secret\Secret");

【讨论】:

    【解决方案2】:

    采用@Bhushan 提出的内容加上使用字符串插值,您可以执行类似的操作

    String UserName = Environment.UserName;
    var Path = $@"C:\Users\{UserName}\AppData\Local\Secret\Secret";
    

    【讨论】:

      猜你喜欢
      • 2011-05-17
      • 2019-10-24
      • 2018-09-02
      • 1970-01-01
      • 2020-02-14
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 2017-11-11
      相关资源
      最近更新 更多