在C应用程序中,我使用以下代码确定现有的本地Windows帐户(inkl)。出于某些原因筛选内置安全主体):
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * from Win32_Account Where LocalAccount = True AND Status = 'OK' AND (SidType = 1 OR SidType = 5)" +
" AND (SID <> 'S-1-3-3' AND SID <> 'S-1-3-2' AND SID <> 'S-1-5-9' " +
" AND SID <> 'S-1-5-8' AND SID <> 'S-1-5-10' AND SID <> 'S-1-5-12' " +
" AND SID <> 'S-1-2-0')");
ManagementObjectCollection objects = searcher.Get();
foreach (ManagementBaseObject obj in objects)
{
....
}
现在,我正在寻找另一种方法/方法来确定现有的本地Windows帐户,如上文所述,因为此方法不太稳定-->有时会抛出一个comexception(在执行searcher.get()时):
system.runtime.interopservices.comexception
(0x800706BA)在
system.runtime.interopservices.marshal.throwexceptionforhrinternal(int32
错误代码,intptr errorinfo)位于
system.management.managementobjectcollection.managementobjectenumerator.moveNext()
在我看来,这种例外是不确定的。
最佳答案
我不完全明白你需要什么,但这里有一个很好的例子,让所有的windows帐户在系统上
http://csharptuning.blogspot.com/2007/09/how-to-get-list-of-windows-user-in-c.html
让当前的系统用户简单地编写
System.Security.Principal.WindowsIdentity.GetCurrent()
你也可以这样做
static void Main(string[] args)
{
SelectQuery query = new SelectQuery("Win32_UserAccount");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
foreach (ManagementObject envVar in searcher.Get())
{
Console.WriteLine("Username : {0}", envVar["Name"]);
}
Console.ReadLine();
}
关于c# - 通过.NET确定现有的本地Windows帐户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6595851/