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



是否可以在OleDB连接的数据源上使用Windows用户名?我想将 excel 文件放在文档文件夹并从中提取信息,但我不想在那里硬编码用户名。无论如何都可以获得该用户名吗?

我正在使用Windows表单。

con = new OleDBConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:Users[username]DocumentsTest.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;
}

如果您尝试访问其他用户的文档文件夹,则需要减少对该文件夹的限制或使用管理权限进行操作。

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

最新更新