【问题标题】:How to specify username when referencing directory in C# [duplicate]在C#中引用目录时如何指定用户名[重复]
【发布时间】:2019-08-29 15:50:12
【问题描述】:

基本上我正在尝试创建一个进入本地目录并通过执行批处理文件来执行一些任务的 C# 程序。批处理文件本身位于 AppData Roaming 表中,并且需要 C# 程序知道计算机的用户名,无论它可能是什么。

这是我目前拥有的:

static void Main()
{
    ProcessStartInfo processInfo = new ProcessStartInfo("C:\\Users\\%username%\\AppData\\Roaming");
    processInfo.WindowStyle = ProcessWindowStyle.Hidden;
    processInfo.CreateNoWindow = true;
    processInfo.UseShellExecute = true;
    Process batchProcess = new Process();
    batchProcess.StartInfo = processInfo;
    batchProcess.Start();
}

请注意我是如何添加 %username% 的,但它似乎不理解环境变量。

我可以在我的代码中添加什么?

我的代码并不完全是重复的,因为用例完全不同,我正在引用应用程序数据漫游目录并打开位于其中的批处理。

【问题讨论】:

  • 你想得到你电脑的用户名吗?
  • 是的,我希望程序了解当前登录的用户名是什么
  • 您可能想使用Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 而不是自己构建该路径。
  • 标题的措辞方式,链接的副本是有道理的,但从意图来看,我认为类似下面的内容会是更合适的副本? stackoverflow.com/questions/867485/…

标签: c#


【解决方案1】:

您可以像这样获取当前用户的用户文件夹:

string userfolder = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);

所以你想要的路径是这样的:

string path = Path.Combine(userfolder, "AppData\\Roaming");
ProcessStartInfo processInfo = new ProcessStartInfo(path);

【讨论】:

  • 如何在我的路径中实现它?
  • @Winston 我编辑了我的答案,请看一下
  • 您知道,我们可以更改漫游文件夹。如果漫游文件夹不在用户文件夹中,或者我们有不同的名称,这将失败。这种情况在比家用电脑更复杂的环境中经常发生。
  • 如何使用“路径”字符串,而不是 new ProcessStartInfo 中给出的路径?
  • 字符串用户文件夹 = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); string path = Path.Combine(userfolder, "test1.bat");
猜你喜欢
  • 1970-01-01
  • 2017-09-19
  • 2014-10-14
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多