是否可以在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,或者放在其中一个公用文件夹中。这会简单得多。