Jak získat jméno uživatele procesu   zodpovězená otázka

VB.NET

Jak získat jméno uživatele, který spustil proces na lokálním počítači.

Pokud použiji k získání jména uživatele WMI s následujícím kódem, kde znám Id procesu a kód je spuštěn s právy administrátora:

Dim PID as Integer = 420
        Dim query As New SelectQuery("SELECT * FROM Win32_Process WHERE ProcessId = " & PID & "")
        Dim search As New ManagementObjectSearcher(query)
        search.Scope.Options.EnablePrivileges = True
        search.Scope.Options.Impersonation = ImpersonationLevel.Impersonate
        Dim info As ManagementObject = Nothing
        Dim User() As Object = {String.Empty}
        For Each info In search.Get()
            info.InvokeMethod("GetOwner", User)
        Next
        search.Dispose()
        info.Dispose()

Pak v

User(0)

je uživatel uveden jenom přihlášený uživatel a SYSTEM. Uživatelé, kteří spustili proces s omezenými právy (např. pomocí "Spustit jako ..."), nebo s právy NETWORK SERVICE pak zde uvedeny nejsou -

User(0) = Nothing

.

Pokud uvedený kód je spuštěn s právy SYSTEM, pak to funguje v pořádku.

Lze i nějak jinak získat jméno uživatele procesu?

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

Pokud jste ve VB.NET, není lepší zjistit uživatele procesu takto?

System.Diagnostics.Process.GetProcessById(420).StartInfo.UserName

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

To byla první věc která mě napadla, bohužel to nefunguje. Řekl bych že to funguje pouze v případě, kdy se vytvoří nový proces do kterého se předá instance StartInfo... Takže jediné řešení je skutečně WMI nebo Win32 API.

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

Omlouvám se, nebyl jsem přes víkend v dostupnosti na net, ale měl jsem možnost vyzkoušet uvedený kód na druhém stroji a dospěl jsem k zajímavému výsledku. Na druhém stroji to funguje. Začal jsem se zkoumáním důvodu, zatím bezúspěšně, ale

také jsem zjistil, že ve Správci úloh v Procesech se mi Uživatelské jména nezobrazují vůbec (i když je zobrazování vybráno) a ve výběru Uživatelé se také nic nezobrazuje. Také nefunguje příkaz tskill.

Protože na mém stroji dělám "psí kusy" (programování, sahání do registrů, zkoušky i neodladěných aplikací a pod.), je možné, že jsem něco pomrvil a protože místo Správce úloh používám Process Explorer, který zobrazuje vše a umožňuje mně postačující akce,tak jsem na to přišel pozdě.

Také je možné, že byl stroj infikován, i když "Anti" programy nic nehlásili ani při pravidelných kontrolách a systém při práci nevykazuje žádné nezvyklosti.

Nejrychlejší bude asi přeinstalace systému (původně jsem to chtěl provést po SP3, no ale nic se nedá dělat)

Děkuji za příspěvky, ale stejně by mě zajímalo jak to zkusit pomocí Win32 API. Pokud máte nějaké relevantní linky (nemusí být jenom ve VB), rád bych to zkusil ještě před přeinstalací zda se pomocí ní dát něco vydolovat. (Hledal jsem, možná blbě, ale nic zajímavého jsem nenašel)

P.S.

Teď mě napadá, že by nějaký Root-kit? No potěš Pánbů. Že by přes Firewall, Antivirus a Antispyware? No je pravda, že nepoužívám stroj jenom já.

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

Tak virem to rozhodně nebude. Tipoval bych spíš nedostatečná oprávnění (pro takové akce je většinou potřeba mít členství ve skupině Administrators, User nebo Power User nestačí).

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

Mno, již v úvodním dotazu jsem psal:

"a kód je spuštěn s právy administrátora", tím jsem myslel, že účet pod kterým byl kód spuštěn, patří do skupiny Adninistrators.

Nevadí, jenom by mě zajímalo jako to zkusit pomocí Win32 API. Pokud máte nějaké relevantní linky (nemusí být jenom ve VB), rád bych to zkusil ještě před přeinstalací.

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

Teprve teď jsem vyzkoušel vámi uvedený kód a uživatelské jméno vlastníka procesu se mi načítá korektně. Ještě bych zkontroloval, zda-li na počítači kde to nefunguje běží služba "Služba WMI", případně má-li nastaveno automatické spouštění.

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

Služba běží. Má nastaveno na Automatické spouštění.

Zjistil jsem v Process Exploreru, že:

-před spuštěním kódu proces "wmiprvse.exe" běží pod účtem NT AUTHORITY\SYSTEM

-po spuštění kódu přibude další instance procesu "wmiprvse.exe" pod účtem NT AUTHORITY\NETWORK SERVICE

Nejsem si jistý, ale myslím si, že je to v pořádku.

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

Tak jsem přetvořil kód z http://www.codeproject.com/KB/cs/process... (část pro Win32 API) na použití ve Visual Basic .NET a výsledek:

Zobrazuje při administrátorských právech pouze aktuálně přihlášeného uživatele (tj. procesy spuštěné pod jinými uživateli pomocí rutiny Win32 API vůbec nezobrazuje) . Chyba je v systému a ani API funkce, které jsem na netu našel nepomohli. Pokud máte link na jinou metodu, uveďte ji prosím.

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

Asi vás nepotěším, protože váš kód mi zobrazuje i systémové vlastníky procesu (SYSTEM, LOCAL SERVICE, NETWORK SERVICE) a vlastníky jiné než aktuálně přihlášený uživatel (zkusil jsem spustit Poznámkový blok pod nově vytvořeným účtem Uzivatel1 s členstvím v Users). Takže problém bude někde jinde...

Předpokládám že jste si "nehrál" s výchozím nastavením zabezpečení .NET Frameworku (Start/Nastavení/Ovládací panely/Nástroje pro správu/Microsoft .NET Framework Configuration).

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

Vyřešeno při přeinstalaci!

Zjištěný stav nastává po aktualizaci ADOBE ACROBAT Reader 8.0 CZ na nabízenou verzi 8.1. Po aktualizaci RootkitRevealer vypisuje různé skryté soubory na systémovém disku a posledním použitém disku. Nefunguje v něm uložení zjištěného stavu a zůstávají po něm v systému různé nesmyslné služby. Adobe šel ze stroje do háje a pro pdf dokumenty byla nainstalovaná alternativní aplikace.

Omlouvám se za vlastně nesmyslný dotaz, který neřešil programování, ale chybu systému.

nahlásit spamnahlásit spam 1 / 1 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