Advertisement

06.17.2008 at 07:46AM PDT, ID: 23491724
[x]
Attachment Details

Problem whit CopySID

Asked by 0x7F in Windows ATL / WTL / COM Programming, Windows Programming, Microsoft Programming

Tags: ,

Hi guys i have a problem (i think little), the CopySID fuction return a good SID structure but in the main function the check give a totaly different textual SID! Why? :/Start Free Trial
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
BOOL GetProcessOwnerSid(DWORD dwProcessId, LPTSTR lpszOwnerSid, PSID ptagOwnerSid) {
	HANDLE hProcess;
	HANDLE hProcessToken;
	DWORD dwTokenInfoLength = 0;
	DWORD dwSidLength;
	LPTSTR lpszOwnerSidHeap;
	PTOKEN_USER ptagTokenUser;
	SID_NAME_USE eSidNameUse;
	if ((lpszOwnerSid) && (ptagOwnerSid)) {
		hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwProcessId);
		if (!hProcess) {
			return FALSE;
		}
		if (!OpenProcessToken(hProcess, TOKEN_QUERY, &hProcessToken)) {
			return FALSE;
		}
		GetTokenInformation(hProcessToken, TokenUser, ptagTokenUser, 
			                dwTokenInfoLength, &dwTokenInfoLength);
		ptagTokenUser = (PTOKEN_USER)GlobalAlloc(GPTR, dwTokenInfoLength);
		if (!ptagTokenUser) {
			return FALSE;
		}
		if (!GetTokenInformation(hProcessToken, TokenUser, ptagTokenUser, 
			                     dwTokenInfoLength, &dwTokenInfoLength)) {
				return FALSE;
		}
		if (IsValidSid(ptagTokenUser->User.Sid)) {
			if (lpszOwnerSid != NULL) {
				if (!ConvertSidToStringSid(ptagTokenUser->User.Sid, &lpszOwnerSidHeap)) {
					return FALSE;
				}
				lstrcpy(lpszOwnerSid, lpszOwnerSidHeap);
				LocalFree((HLOCAL)lpszOwnerSidHeap);
			}
			if (ptagOwnerSid != NULL) {
				dwSidLength = GetLengthSid(ptagTokenUser->User.Sid);
				ptagOwnerSid = (PSID)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwSidLength);
				if (!ptagOwnerSid) {
					return FALSE;
				}
				if(!CopySid(dwSidLength, ptagOwnerSid, ptagTokenUser->User.Sid)) {
                   return FALSE;
				}
				if (!IsValidSid(ptagOwnerSid)) {
				    return FALSE;
				}
			}
		} else {
			return FALSE;
		}
	}
	GlobalFree((HGLOBAL)ptagTokenUser);
	return TRUE;
}
 
int _tmain(int argc, LPCTSTR *argv[]) {
 
	TCHAR szSidName[256];
	PSID ptagSid;
    
 
    GetProcessOwnerSid(932, szSidName, ptagSid);
    LPTSTR lpszSidName = szSidName;
	ZeroMemory(&szSidName, lstrlen(szSidName));
	ConvertSidToStringSid(ptagSid, &lpszSidName);
	
	HeapFree(GetProcessHeap(), NULL, ptagSid);
	Pause();
	ExitProcess(TRUE);
}
 
 
Loading Advertisement...
 
[+][-]06.18.2008 at 12:30AM PDT, ID: 21810769

Experts Exchange has a courteous staff of administrators who help members get the most out of the website by means of administrative comments like this one.

Start your 7-day free trial to view this Administrative Comment or ask the Experts your question.

 
[+][-]06.20.2008 at 04:56AM PDT, ID: 21830194

Experts Exchange has a courteous staff of administrators who help members get the most out of the website by means of administrative comments like this one.

Start your 7-day free trial to view this Administrative Comment or ask the Experts your question.

 
[+][-]06.20.2008 at 09:37AM PDT, ID: 21832810

View this solution now by starting your 7-day free trial. Setting up your free trial is quick, easy, and secure. We will return you to this solution, unlocked, when you're done.

 

About this solution

Zones: Windows ATL / WTL / COM Programming, Windows Programming, Microsoft Programming
Tags: C\C++ - Win32 API system programming - Security, Firefox 2.0
Sign Up Now!
Solution Provided By: 0x7F
Participating Experts: 0
Solution Grade: A
 
 
 
Loading Advertisement...
20080716-EE-VQP-32 / EE_QW_2_20070628