В приложении C # я использую следующий код, чтобы определить существующие локальные учетные записи Windows (по некоторым причинам, фильтруя встроенные участники безопасности):
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 errorCode, IntPtr errorInfo) в System.Management.ManagementEjectObjectObjectCject
На мой взгляд, исключение не определено.