Bläddra i källkod

修整代码格式;

scbc.sat2 5 år sedan
förälder
incheckning
dbd5e2111a

+ 5 - 0
SATService/SATService/SATProtocol.h

@@ -67,6 +67,11 @@ namespace SATPROTO{
 		Device		ssDevs[30];
 	}DeviceResp, *pDeviceResp;
 
+	// ÈÎÎñ²éѯ;
+	typedef struct __QUERY_TASK_RESP__{
+		
+	}TaskResp, *pTaskResp;
+
 #pragma pack(pop)
 }
 

+ 32 - 32
SATService/SATService/SATService.vcproj

@@ -295,38 +295,6 @@
 				>
 			</File>
 		</Filter>
-		<Filter
-			Name="tinyxml"
-			>
-			<File
-				RelativePath=".\stdint.h"
-				>
-			</File>
-			<File
-				RelativePath=".\tinyxml2.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="0"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="0"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\tinyxml2.h"
-				>
-			</File>
-		</Filter>
 		<Filter
 			Name="cJson"
 			>
@@ -407,6 +375,38 @@
 				>
 			</File>
 		</Filter>
+		<Filter
+			Name="tinyxml"
+			>
+			<File
+				RelativePath=".\stdint.h"
+				>
+			</File>
+			<File
+				RelativePath=".\tinyxml2.cpp"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\tinyxml2.h"
+				>
+			</File>
+		</Filter>
 		<File
 			RelativePath=".\ReadMe.txt"
 			>

+ 67 - 134
SATService/SATService/ScriptExecutor.cpp

@@ -147,23 +147,20 @@ int CScriptExecutor::RedirectSubprocessStdout(LPSTARTUPINFO si /*=NULL*/)
 #endif
 
 	// Python脚本中,必须使用sys.__stdout__()
-	if (m_nRunType == SUBPROCESS)
-	{
+	if (m_nRunType == SUBPROCESS) {
 		SECURITY_ATTRIBUTES sa;
 		sa.bInheritHandle = TRUE;
 		sa.lpSecurityDescriptor = NULL;
 		sa.nLength = sizeof(sa);
 
 		// 创建stdout的管道;
-		if (!CreatePipe(&m_hStdOutRead, &m_hStdOutWrite, &sa, 0))
-		{
+		if (!CreatePipe(&m_hStdOutRead, &m_hStdOutWrite, &sa, 0)) {
 			OutputDebugString("Error:创建stdout管道失败\n");
 			return -1;
 		}
 
 		// 创建stderr的管道,由于stderr一般就是stdout,直接复制句柄;
-		if (!DuplicateHandle(GetCurrentProcess(), m_hStdOutWrite, GetCurrentProcess(), &m_hStdErrorWrite, 0, TRUE, DUPLICATE_SAME_ACCESS))
-		{
+		if (!DuplicateHandle(GetCurrentProcess(), m_hStdOutWrite, GetCurrentProcess(), &m_hStdErrorWrite, 0, TRUE, DUPLICATE_SAME_ACCESS)) {
 			OutputDebugString("创建stderr管道失败\n");
 			return -2;
 		}
@@ -188,11 +185,9 @@ int CScriptExecutor::RedirectProcessStdout()
 #ifdef _DEBUG
 	OutputDebugString("RedirectProcessStdout\n");
 #endif
-	if (m_nRunType == EMBEDDED)
-	{
+	if (m_nRunType == EMBEDDED) {
 		// 创建stdout的管道;
-		if (!CreatePipe(&m_hStdOutRead, &m_hStdOutWrite, NULL, 0))
-		{
+		if (!CreatePipe(&m_hStdOutRead, &m_hStdOutWrite, NULL, 0)) {
 			printf("Error:创建stdout管道失败\n");
 			return -1;
 		}
@@ -200,8 +195,7 @@ int CScriptExecutor::RedirectProcessStdout()
 		// 将 C 运行时文件描述符与现有操作系统文件句柄关联;
 		int wpfd = _open_osfhandle((intptr_t)m_hStdOutWrite, _O_TEXT);
 		// 为stdout分配新文件描述符;
-		if (_dup2(wpfd, _fileno(stdout)) != 0)
-		{
+		if (_dup2(wpfd, _fileno(stdout)) != 0) {
 			printf("Error:dup2调用失败");
 			return -2;
 		}
@@ -210,8 +204,7 @@ int CScriptExecutor::RedirectProcessStdout()
 		// 备份进程原始标准输出;
 		m_hOldStdOutWrite = GetStdHandle(STD_OUTPUT_HANDLE);
 		// 设备进程标准输出,重定向到管道中;
-		if (!SetStdHandle(STD_OUTPUT_HANDLE, m_hStdOutWrite))
-		{
+		if (!SetStdHandle(STD_OUTPUT_HANDLE, m_hStdOutWrite)) {
 			printf("Error:重定向失败\n");
 			return -3;
 		}
@@ -252,17 +245,14 @@ void CScriptExecutor::CatchPythonException()
 	// 非控制台,使用PyErr_Fetch捕获异常;
 	PyErr_Fetch(&pPyType, &pPyValue, &pPyTraceback);
 	PyErr_NormalizeException(&pPyType, &pPyValue, &pPyTraceback); // 可有可无,不影响获取异常;
-	if (pPyValue)
-	{
+	if (pPyValue) {
 		PyObject* pPyStr = PyObject_Str(pPyValue);
-		if (PyString_Check(pPyStr))
-		{
+		if (PyString_Check(pPyStr)) {
 			pszErrMsg = PyString_AsString(pPyStr);
 			if (pszErrMsg)
 				printf("Error Info=>%s\n", pszErrMsg);
 
-			if (pPyTraceback)
-			{
+			if (pPyTraceback) {
 				PyObject* pPyTraceModule = PyImport_ImportModule("traceback");
 				if (!pPyTraceModule)
 				{
@@ -271,21 +261,17 @@ void CScriptExecutor::CatchPythonException()
 				}
 #if 1 // 细分出所有换行符;
 				PyObject* pPyModuleDict = PyModule_GetDict(pPyTraceModule);
-				if (pPyModuleDict)
-				{
+				if (pPyModuleDict) {
 					PyObject* pPyFunc = PyDict_GetItemString(pPyModuleDict, "format_exception");
-					if (!pPyFunc || !PyCallable_Check(pPyFunc))
-					{
+					if (!pPyFunc || !PyCallable_Check(pPyFunc)) {
 						printf("Error:加载format_exception失败\n");
 						return;
 					}
 
 					PyObject* pErroList = PyObject_CallFunctionObjArgs(pPyFunc, pPyType, pPyValue, pPyTraceback, NULL);
-					if (pErroList)
-					{
+					if (pErroList) {
 						int nSize = PyList_Size(pErroList);
-						for (int i = 0; i < nSize; i++)
-						{
+						for (int i = 0; i < nSize; i++) {
 							pszErrMsg = PyString_AsString(PyList_GetItem(pErroList, i));
 							printf("%s", pszErrMsg);
 						}
@@ -323,8 +309,7 @@ void CScriptExecutor::CatchPythonException()
 int CScriptExecutor::RunEmbeddedScript()
 {
 	// 参数有效性判断;
-	if (!PathFileExists(m_szScriptPath))
-	{
+	if (!PathFileExists(m_szScriptPath)) {
 		printf("Error:脚本文件不存在\n");
 		return -1;
 	}
@@ -333,8 +318,7 @@ int CScriptExecutor::RunEmbeddedScript()
 	if (!Py_IsInitialized())
 		Py_Initialize();
 
-	if (!Py_IsInitialized())
-	{
+	if (!Py_IsInitialized()) {
 		printf("Error:初始化Python环境失败\n");
 		return -2;
 	}
@@ -352,8 +336,7 @@ int CScriptExecutor::RunEmbeddedScript()
 	scriptdir = szScriptDir;
 	// 将'\'转换成'/', Python才设置运行目录成功;
 	int len = _tcslen(szScriptDir);
-	for (int i = 0; i < len; i++)
-	{
+	for (int i = 0; i < len; i++) {
 		if (szScriptDir[i] == '\\')
 			szScriptDir[i] = '/';
 	}
@@ -489,8 +472,7 @@ int CScriptExecutor::RunScriptProcess()
 
 int CScriptExecutor::ServiceRunScriptProcess()
 {
-	if (!PathFileExists(m_szScriptPath))
-	{
+	if (!PathFileExists(m_szScriptPath)) {
 		printf("Error:脚本路径无效\n");
 		return -1;
 	}
@@ -501,26 +483,20 @@ int CScriptExecutor::ServiceRunScriptProcess()
 	DWORD dwSid = GetActiveSessionID();
 	
 	HANDLE hProcess = NULL, hPToken = NULL, hUserTokenDup = NULL;
-	if (!WTSQueryUserToken(dwSid, &hPToken))
-	{
+	if (!WTSQueryUserToken(dwSid, &hPToken)) {
 		PROCESSENTRY32 procEntry;
 		DWORD dwPid = 0;
 		HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
-		if (hSnap == INVALID_HANDLE_VALUE)
-		{
+		if (hSnap == INVALID_HANDLE_VALUE) {
 			return FALSE;
 		}
 
 		procEntry.dwSize = sizeof(PROCESSENTRY32);
-		if (Process32First(hSnap, &procEntry))
-		{
-			do
-			{
-				if (_tcsicmp(procEntry.szExeFile, _T("explorer.exe")) == 0)
-				{
+		if (Process32First(hSnap, &procEntry)) {
+			do {
+				if (_tcsicmp(procEntry.szExeFile, _T("explorer.exe")) == 0) {
 					DWORD exeSessionId = 0;
-					if (ProcessIdToSessionId(procEntry.th32ProcessID, &exeSessionId) && exeSessionId == dwSid)
-					{
+					if (ProcessIdToSessionId(procEntry.th32ProcessID, &exeSessionId) && exeSessionId == dwSid) {
 						dwPid = procEntry.th32ProcessID;
 						break;
 					}
@@ -531,19 +507,16 @@ int CScriptExecutor::ServiceRunScriptProcess()
 		CloseHandle(hSnap);
 
 		// explorer进程不存在
-		if (dwPid == 0)
-		{
+		if (dwPid == 0) {
 			return FALSE;
 		}
 
 		hProcess = ::OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwPid);
-		if (hProcess == NULL)
-		{
+		if (hProcess == NULL) {
 			return FALSE;
 		}
 
-		if(!::OpenProcessToken(hProcess, TOKEN_ALL_ACCESS_P,&hPToken))
-		{
+		if(!::OpenProcessToken(hProcess, TOKEN_ALL_ACCESS_P,&hPToken)) {
 			CloseHandle(hProcess);
 			return FALSE;
 		}
@@ -555,20 +528,16 @@ int CScriptExecutor::ServiceRunScriptProcess()
 	TOKEN_LINKED_TOKEN admin;
 	bResult = GetTokenInformation(hPToken, (TOKEN_INFORMATION_CLASS)19, &admin, sizeof(TOKEN_LINKED_TOKEN), &dwRet);
 
-	if (!bResult) // vista 以前版本不支持TokenLinkedToken
-	{
+	if (!bResult) {// vista 以前版本不支持TokenLinkedToken
 		TOKEN_PRIVILEGES tp;
 		LUID luid;
-		if (LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&luid))
-		{
+		if (LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&luid)) {
 			tp.PrivilegeCount =1;
 			tp.Privileges[0].Luid =luid;
 			tp.Privileges[0].Attributes =SE_PRIVILEGE_ENABLED;
 		}
 		DuplicateTokenEx(hPToken,MAXIMUM_ALLOWED,NULL,SecurityIdentification,TokenPrimary,&hUserTokenDup);
-	}
-	else
-	{
+	} else {
 		hUserTokenDup = admin.LinkedToken;
 	}
 
@@ -658,16 +627,14 @@ bool CScriptExecutor::StartThread()
 {
 	// 创建线程;
 	m_hWorkThread = CreateThread(NULL, 0, _WorkerThread, this, 0, &m_dwThreadId);
-	if (!m_hWorkThread)
-	{
+	if (!m_hWorkThread) {
 		printf("Error:创建执行线程失败\n");
 		return false;
 	}
 
 	// 创建线程;
 	m_hLogThread = CreateThread(NULL, 0, _LogExportThread, this, CREATE_SUSPENDED, NULL);
-	if (!m_hLogThread)
-	{
+	if (!m_hLogThread) {
 		printf("Error:创建日志线程失败\n");
 		return false;
 	}
@@ -735,11 +702,9 @@ void CScriptExecutor::EndThread()
 BOOL CScriptExecutor::EndSubprocess()
 {
 	BOOL ret = false;
-	if (m_pi.hProcess)
-	{
+	if (m_pi.hProcess) {
 		// 尝试5次结束;
-		for (int i = 0; i < 5; i++)
-		{
+		for (int i = 0; i < 5; i++) {
 			if ( (ret = TerminateProcess(m_pi.hProcess, 0)) )
 				break;
 		}
@@ -815,11 +780,9 @@ DWORD CScriptExecutor::GetActiveSessionID()
 
 	WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1, &pSessionInfo, &dwCount);
 
-	for(DWORD i = 0; i < dwCount; i++)
-	{
+	for(DWORD i = 0; i < dwCount; i++) {
 		WTS_SESSION_INFO si = pSessionInfo[i];
-		if(WTSActive == si.State)
-		{
+		if(WTSActive == si.State) {
 			dwSessionId = si.SessionId;
 			break;
 		}
@@ -843,27 +806,20 @@ BOOL CScriptExecutor::ServiceExecute(std::wstring wstrCmdLine, INT32& n32ExitRes
 	PROCESS_INFORMATION pi;
 	STARTUPINFO si;
 	HANDLE hProcess = NULL, hPToken = NULL, hUserTokenDup = NULL;
-	if (!WTSQueryUserToken(dwSid, &hPToken))
-	{
-		ofile<<"get token error 1"<<std::endl;
+	if (!WTSQueryUserToken(dwSid, &hPToken)) {
 		PROCESSENTRY32 procEntry;
 		DWORD dwPid = 0;
 		HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
-		if (hSnap == INVALID_HANDLE_VALUE)
-		{
+		if (hSnap == INVALID_HANDLE_VALUE) {
 			return FALSE;
 		}
 
 		procEntry.dwSize = sizeof(PROCESSENTRY32);
-		if (Process32First(hSnap, &procEntry))
-		{
-			do
-			{
-				if (_tcsicmp(procEntry.szExeFile, _T("explorer.exe")) == 0)
-				{
+		if (Process32First(hSnap, &procEntry)) {
+			do {
+				if (_tcsicmp(procEntry.szExeFile, _T("explorer.exe")) == 0) {
 					DWORD exeSessionId = 0;
-					if (ProcessIdToSessionId(procEntry.th32ProcessID, &exeSessionId) && exeSessionId == dwSid)
-					{
+					if (ProcessIdToSessionId(procEntry.th32ProcessID, &exeSessionId) && exeSessionId == dwSid) {
 						dwPid = procEntry.th32ProcessID;
 						break;
 					}
@@ -880,13 +836,11 @@ BOOL CScriptExecutor::ServiceExecute(std::wstring wstrCmdLine, INT32& n32ExitRes
 		}
 
 		hProcess = ::OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwPid);
-		if (hProcess == NULL)
-		{
+		if (hProcess == NULL) {
 			return FALSE;
 		}
 
-		if(!::OpenProcessToken(hProcess, TOKEN_ALL_ACCESS_P,&hPToken))
-		{
+		if(!::OpenProcessToken(hProcess, TOKEN_ALL_ACCESS_P,&hPToken)) {
 			CloseHandle(hProcess);
 			return FALSE;
 		}
@@ -898,21 +852,16 @@ BOOL CScriptExecutor::ServiceExecute(std::wstring wstrCmdLine, INT32& n32ExitRes
 	TOKEN_LINKED_TOKEN admin;
 	bResult = GetTokenInformation(hPToken, (TOKEN_INFORMATION_CLASS)19, &admin, sizeof(TOKEN_LINKED_TOKEN), &dwRet);
 
-	if (!bResult) // vista 以前版本不支持TokenLinkedToken
-	{
-		ofile<<"Get token info error" <<std::endl;
+	if (!bResult)  {// vista 以前版本不支持TokenLinkedToken
 		TOKEN_PRIVILEGES tp;
 		LUID luid;
-		if (LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&luid))
-		{
+		if (LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&luid)) {
 			tp.PrivilegeCount =1;
 			tp.Privileges[0].Luid =luid;
 			tp.Privileges[0].Attributes =SE_PRIVILEGE_ENABLED;
 		}
 		DuplicateTokenEx(hPToken,MAXIMUM_ALLOWED,NULL,SecurityIdentification,TokenPrimary,&hUserTokenDup);
-	}
-	else
-	{
+	} else {
 		hUserTokenDup = admin.LinkedToken;
 		ofile<<"token: "<<hUserTokenDup<<std::endl;
 	}
@@ -920,12 +869,9 @@ BOOL CScriptExecutor::ServiceExecute(std::wstring wstrCmdLine, INT32& n32ExitRes
 	LPVOID pEnv =NULL;
 	DWORD dwCreationFlags = CREATE_PRESERVE_CODE_AUTHZ_LEVEL;
 
-	if(CreateEnvironmentBlock(&pEnv,hUserTokenDup,TRUE))
-	{
+	if(CreateEnvironmentBlock(&pEnv,hUserTokenDup,TRUE)) {
 		dwCreationFlags|=CREATE_UNICODE_ENVIRONMENT;
-	}
-	else
-	{
+	} else {
 		pEnv = NULL;
 	}
 
@@ -937,45 +883,36 @@ BOOL CScriptExecutor::ServiceExecute(std::wstring wstrCmdLine, INT32& n32ExitRes
 
 	bResult = CreateProcessAsUser(
 		hUserTokenDup,                     // client's access token
-		NULL,    // file to execute
+		NULL,							// file to execute
 		(LPTSTR) wstrCmdLine.c_str(),                 // command line
-		NULL,            // pointer to process SECURITY_ATTRIBUTES
-		NULL,               // pointer to thread SECURITY_ATTRIBUTES
-		FALSE,              // handles are not inheritable
-		dwCreationFlags,     // creation flags
-		pEnv,               // pointer to new environment block
-		NULL,               // name of current directory
-		&si,               // pointer to STARTUPINFO structure
-		&pi                // receives information about new process
+		NULL,							// pointer to process SECURITY_ATTRIBUTES
+		NULL,							// pointer to thread SECURITY_ATTRIBUTES
+		FALSE,							// handles are not inheritable
+		dwCreationFlags,				// creation flags
+		pEnv,							// pointer to new environment block
+		NULL,							// name of current directory
+		&si,							// pointer to STARTUPINFO structure
+		&pi								// receives information about new process
 		);	
 
-	if(pi.hProcess)
-	{
-		if(WAIT_OBJECT_0 == WaitForSingleObject(pi.hProcess, 180000))
-		{
+	if(pi.hProcess) {
+		if(WAIT_OBJECT_0 == WaitForSingleObject(pi.hProcess, 180000)) {
 			DWORD dwResult = 0;
-			if(GetExitCodeProcess(pi.hProcess,  &dwResult))
-			{
+			if(GetExitCodeProcess(pi.hProcess,  &dwResult)) {
 				n32ExitResult = dwResult;
-			}
-			else
-			{
+			} else {
 				n32ExitResult = -1;
 			}
 
 			CloseHandle(pi.hThread);
 			CloseHandle(pi.hProcess);
-		}
-		else
-		{
+		} else {
 			CloseHandle(pi.hThread);
 			CloseHandle(pi.hProcess);
 			n32ExitResult = -1;
 		}
 	}
 
-
-
 	if (hUserTokenDup != NULL)
 		CloseHandle(hUserTokenDup);
 	if (hProcess != NULL)
@@ -992,26 +929,22 @@ BOOL CScriptExecutor::ServiceExecute(std::wstring wstrCmdLine, INT32& n32ExitRes
 bool CScriptExecutor::InitScript(std::string strScript, std::string strLogPath, std::string strScriptCmd, int nRunType /*= PY_RUN_TYPE::EMBEDDED*/)
 {
 	// 判断脚本是否存在;
-	if (!PathFileExists(strScript.c_str()))
-	{
+	if (!PathFileExists(strScript.c_str())) {
 		printf("Error:脚本文件不存在\n");
 		return false;
 	}
 
 	// 判断日志文件路径是否可创建;
-	if (!PathFileExists(strLogPath.c_str()))
-	{
+	if (!PathFileExists(strLogPath.c_str())) {
 		// 创建路径;
-		if (!GLOBAL::MKDIR(strLogPath.c_str()))
-		{
+		if (!GLOBAL::MKDIR(strLogPath.c_str())) {
 			printf("Error:创建目录失败\n");
 			return false;
 		}
 
 		// 创建文件;
 		std::ofstream flog(strLogPath.c_str());
-		if ( flog.bad() )
-		{
+		if ( flog.bad() ) {
 			printf("Error:创建文件失败\n");
 			return false;
 		}