C#OLEDB连接,是否可以在数据源目录中获取windows用户名?

C#OLEDB连接,是否可以在数据源目录中获取windows用户名?,c#,oledb,C#,Oledb,是否可以在OleDB连接的数据源上使用windows用户名?我想把excel文件放在Documents文件夹中并从中提取信息,但我不想在那里硬编码用户名。有没有办法得到那个用户名 我正在使用Windows窗体 con = new OleDBConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\[username]\Documents\Test.xlsx; Extended properties=Excel 12.0

是否可以在OleDB连接的数据源上使用windows用户名?我想把excel文件放在Documents文件夹中并从中提取信息,但我不想在那里硬编码用户名。有没有办法得到那个用户名

我正在使用Windows窗体

con = new OleDBConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\[username]\Documents\Test.xlsx; Extended properties=Excel 12.0;"

获取用户名的方法有很多种。如果需要当前登录的用户,可以使用
Environment.Username
。如果需要当前域中所有用户的列表,可以使用以下方法

public List<string> GetDomainUsers() 

var usersInCurrentDomain = new List<string>(); 

SelectQuery sQuery = new SelectQuery("Win32_UserAccount", $"Domain ='{Environment.UserDomainName}'");

ManagementObjectSearcher mSearcher = new ManagementObjectSearcher(sQuery);

foreach (ManagementObject mObject in mSearcher.Get())
{
    product.Add(mObject["Name"]);
}
    return product;
}

公共列表GetDomainUsers()
var usersInCurrentDomain=新列表();
SelectQuery sQuery=new SelectQuery(“Win32_UserAccount”,“$”Domain='{Environment.UserDomainName}'”;
ManagementObjectSearcher mSearcher=新的ManagementObjectSearcher(sQuery);
foreach(mSearcher.Get()中的ManagementObject移动对象)
{
添加(mObject[“Name”]);
}
退货产品;
}
如果您试图访问另一个users documents文件夹,则需要减少对该文件夹的限制,或者使用管理权限


或者,除非此信息对每个用户都是唯一的,否则您可能希望将此信息放在更中性的文件夹中,例如C:\ProgramData\MyApp,或者可能放在其中一个公用文件夹中。这会简单得多

嗨,约翰,更多的信息会帮助你快速得到答案。例如,您如何运行此应用程序?(网络应用、控制台应用等);为了找到答案,你已经研究了什么?在谷歌上搜索“身份”、“当前用户”等术语可能会很幸运。请查看
System.Environment.SpecialFolders
。您可以通过遵循几乎所有使用该工具的示例来获取当前用户的
文档
文件夹。我正在使用windows窗体。如果您需要更具体的内容,请重新表述您的问题或留下评论,我将调整此答案。