Jak zjistit, zda má specifický windows uživatel práva administrátora?   zodpovězená otázka

VB.NET, WinForms

Dobrý den,

obracím se na vás s prosbou, zda nevíte, jakým způsobem zjistit, zda specifický uživatel windows má práva administrátora. Záměrně píši "specifický", protože v tomto případě se nejedná o aktuálního uživatele, kterého mohu otestovat např. dle následujícího kódu:

If My.User.IsInRole(ApplicationServices.BuiltInRole.Administrator)

End If

V mém případě potřebuji obdobným způsobem otestovat existujícího uživatele Windows, který ovšem aktuálně není přihlášen.

Budu vděčný za jakékoliv nasměrování.

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nastudujte a použijte ManagementObjectSearcher

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Šlo by použít System.DirectoryServices.AccountManagement.UserPrincipal:

public static bool IsMemberOf(string userName, string domain, string groupName)
{
    using (var context = new PrincipalContext(ContextType.Domain, domain))
    {
        using (var userPrincipal = UserPrincipal.FindByIdentity(context, userName))
        {
            if (userPrincipal != null)
            {
                return userPrincipal.IsMemberOf(context, IdentityType.SamAccountName, groupName);
            }
        }
    }

    return false;
}
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Dobrý den,

pane Holane, mnohokrát Vám děkuji.

To je přesně ono.

Vytrhl jste mi trn z paty.

Ještě jednou díky za Váš čas a cennou radu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

měl bych ještě jeden dotaz související s výše uvedeným.

Existuje nějaký způsob, jak uvedenou informaci načíst i pod běžným (ne-administrátorským) účtem?

Například pod Guestem?

Díky moc

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Uživatel musí mít přístup k doméně, ale administrátorská práva by neměly být potřeba.

Co vám to dělá za chybu?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Žádný exception to nevyvolává.

Jde o to, že pokud Vámi uvedenou funkci spustím pod svým účtem (sám jsem ve skupině administrátorů), tak funkce správně vrací True. A to i v případě, že kód, ve kterém ta funkce je nespouštím s pomocí Run As Admin).

Když se ale přehlásím do Windows jako Guest a opětovně pustím tento kód, funkce vrátí False.

Samozřejmě v obou případech je dotaz na identického uživatele.

Jediný rozdíl oproti Vámi uvedenému kódu je, že ContextType mám nastaven na hodnotu Machine a předávám tedy jméno počítače.

Uvedená pracovní stanice není v tomto případě v doméně.

Jinak používám Win8.

Díky moc

nahlásit spamnahlásit spam 0 odpovědětodpovědět

+1, tohle se mi bude možná někdy hodit. Tento jmenný prostor jsem nikdy ani nenavštívil, protože ze všech firem, se kterými jsem kdy spolupracoval, byla doména pouze ve dvou.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback