From 367e30e7708fe87f4651fb9fbd4195d81dfd8b6d Mon Sep 17 00:00:00 2001 From: wj32 Date: Sat, 6 Dec 2008 08:52:30 +0000 Subject: [PATCH] Fixed wrong usernames when Process Hacker is running as a non-admin user git-svn-id: svn://svn.code.sf.net/p/processhacker/code@241 21ef857c-d57f-4fe0-8362-d861dc6d29cd --- trunk/CHANGELOG.txt | 1 + .../Providers/ProcessProvider.cs | 14 ++----------- trunk/ProcessHacker/Win32.cs | 21 +++++++++++++++++-- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/trunk/CHANGELOG.txt b/trunk/CHANGELOG.txt index 40354f1cb..c79fc5c1b 100644 --- a/trunk/CHANGELOG.txt +++ b/trunk/CHANGELOG.txt @@ -1,6 +1,7 @@ Process Hacker 1.2.4.0 + * Fixed wrong usernames when Process Hacker is running as a non-admin user 1.2.3.5 * Added handle viewing/closing support diff --git a/trunk/ProcessHacker/Providers/ProcessProvider.cs b/trunk/ProcessHacker/Providers/ProcessProvider.cs index 86556bdac..b7b8cf0e7 100644 --- a/trunk/ProcessHacker/Providers/ProcessProvider.cs +++ b/trunk/ProcessHacker/Providers/ProcessProvider.cs @@ -138,7 +138,6 @@ namespace ProcessHacker Properties.Settings.Default.ShowAccountDomains); item.UsernameWithDomain = Win32.GetProcessUsername(p.Handle.ToInt32(), true); - } catch { @@ -149,13 +148,7 @@ namespace ProcessHacker item.UsernameWithDomain = tsProcesses[p.Id].UsernameWithDomain; } catch - { - if (System.Runtime.InteropServices.Marshal.GetLastWin32Error() == 5) - { - item.Username = "(" + Win32.GetLastErrorMessage() + ")"; - item.UsernameWithDomain = "(" + Win32.GetLastErrorMessage() + ")"; - } - } + { } } newdictionary.Add(p.Id, item); @@ -196,10 +189,7 @@ namespace ProcessHacker newitem.UsernameWithDomain = tsProcesses[p.Id].UsernameWithDomain; } catch - { - newitem.Username = item.Username; - newitem.UsernameWithDomain = item.UsernameWithDomain; - } + { } } if (newitem.MemoryUsage != item.MemoryUsage || diff --git a/trunk/ProcessHacker/Win32.cs b/trunk/ProcessHacker/Win32.cs index fb98ddfde..fb5377688 100644 --- a/trunk/ProcessHacker/Win32.cs +++ b/trunk/ProcessHacker/Win32.cs @@ -2096,8 +2096,25 @@ namespace ProcessHacker returnProcesses[i].Info = (WTS_PROCESS_INFO)Marshal.PtrToStructure( new IntPtr(processes + Marshal.SizeOf(typeof(WTS_PROCESS_INFO)) * i), typeof(WTS_PROCESS_INFO)); - returnProcesses[i].Username = GetAccountName(returnProcesses[i].Info.SID, false); - returnProcesses[i].UsernameWithDomain = GetAccountName(returnProcesses[i].Info.SID, true); + try + { + if (returnProcesses[i].Info.SID == 0) + throw new Exception("Null SID pointer"); + + returnProcesses[i].Username = GetAccountName(returnProcesses[i].Info.SID, false); + } + catch + { } + + try + { + if (returnProcesses[i].Info.SID == 0) + throw new Exception("Null SID pointer"); + + returnProcesses[i].UsernameWithDomain = GetAccountName(returnProcesses[i].Info.SID, true); + } + catch + { } } WTSFreeMemory(processes);