我有一个搜索本地定义的 Windows 用户的代码片段:
using (PrincipalContext context = new PrincipalContext(ContextType.Machine)) {
using (Principal queryFilter = new UserPrincipal(context) { Name = accountName }) {
using (PrincipalSearcher searcher = new PrincipalSearcher(queryFilter)) {
var principal = searcher.FindOne();
...
}
}
}
如果accountName
包含正常的字母数字(例如“testuser”),则代码可以正常工作。但是,如果名称包含美元符号(例如“test$user”),FindOne()
则不返回任何内容。
我怀疑 $ 被解释为某种元字符。有没有办法防止这种情况发生,以便按字面解释?