|
From: <Or...@us...> - 2008-06-11 07:03:30
|
Revision: 243
http://acmcontester.svn.sourceforge.net/acmcontester/?rev=243&view=rev
Author: Oracle_
Date: 2008-06-11 00:03:37 -0700 (Wed, 11 Jun 2008)
Log Message:
-----------
Added extended details for TSecure->RunProcess.
Modified Paths:
--------------
ACMServer/branches/sharp tester/SourceTest/SourceTest.cpp
Modified: ACMServer/branches/sharp tester/SourceTest/SourceTest.cpp
===================================================================
--- ACMServer/branches/sharp tester/SourceTest/SourceTest.cpp 2008-06-10 22:41:51 UTC (rev 242)
+++ ACMServer/branches/sharp tester/SourceTest/SourceTest.cpp 2008-06-11 07:03:37 UTC (rev 243)
@@ -15,7 +15,7 @@
namespace SourceTest
{
-char* StrToArr(String^ str) //converts Managed String to C++ string to
+char* StrToArr(String^ str) //converts Managed String to C++ string
{
return (char*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(str).ToPointer();
}
@@ -366,7 +366,7 @@
return TRUE;
}
-BOOL AddPrivilege(HANDLE hToken,LPCTSTR lpszPrivilege) //adds privilege to process token (in this version unused)
+BOOL AddPrivilege(HANDLE hToken,LPCTSTR lpszPrivilege) //adds privilege to process token
{
TOKEN_PRIVILEGES tp;
LUID luid;
@@ -844,6 +844,13 @@
wchar_t buflpCommandLine[MAX_PATH+1];
if (!GetFullPathName(lpCommandLine,MAX_PATH,buflpCommandLine,NULL))
wcscpy(buflpCommandLine,lpCommandLine);
+ HANDLE myToken;
+ if (OpenProcessToken(GetCurrentProcess(),TOKEN_ALL_ACCESS,&myToken))
+ {
+ if (AddPrivilege(myToken,SE_INCREASE_QUOTA_NAME))
+ {
+ if (AddPrivilege(myToken,SE_ASSIGNPRIMARYTOKEN_NAME))
+ {
if (LogonUser((LPWSTR)USER_NAME,(LPWSTR)".",(LPWSTR)USER_PASSW,LOGON32_LOGON_NETWORK,LOGON32_PROVIDER_DEFAULT,&Token))
{
FileInfo^ fi=gcnew FileInfo(gcnew String(lpCommandLine));
@@ -861,13 +868,25 @@
DestroyEnvironmentBlock(env);
RevertToSelf();
CloseHandle(token);
+ CloseHandle(myToken);
Details="Secured process. Result details: ";
return true;
- }
- }
- }
- }
- }
+ } else
+ Details="Unsecured process. CreateProcessAsUser failed. Error#"+GetLastError().ToString()+" Result details: ";
+ } else
+ Details="Unsecured process. CreateEnvironmentBlock failed. Error#"+GetLastError().ToString()+" Result details: ";
+ } else
+ Details="Unsecured process. ImpersonateLoggedOnUser failed. Error#"+GetLastError().ToString()+" Result details: ";
+ } else
+ Details="Unsecured process. DuplicateTokenEx failed. Error#"+GetLastError().ToString()+" Result details: ";
+ } else
+ Details="Unsecured process. LogonUser failed. Error#"+GetLastError().ToString()+" Result details: ";
+ } else
+ Details="Unsecured process. SE_ASSIGNPRIMARYTOKEN_NAME unavailable. Result details: ";
+ } else
+ Details="Unsecured process. SE_INCREASE_QUOTA_NAME unavailable. Result details: ";
+ } else
+ Details="Unsecured process. OpenProcessToken failed. Error#"+GetLastError().ToString()+" Result details: ";
if (env!=NULL)
DestroyEnvironmentBlock(env);
RevertToSelf();
@@ -875,7 +894,8 @@
CloseHandle(token);
if (Token!=NULL)
CloseHandle(Token);
- Details="Unsecured process. Result details: ";
+ if (myToken!=NULL)
+ CloseHandle(myToken);
if (CreateProcess(NULL,buflpCommandLine,NULL,NULL,bInheritHandles,dwCreationFlags,NULL,NULL,lpStartupInfo,lpProcessInformation))
return true;
return false;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|