转载:http://blog.csdn.net/zdy0_2004/article/details/40461571
#define _WIN32_WINNT 0x502 #define _CRT_SECURE_NO_WARNINGS #include <Windows.h> #include <Shlwapi.h> #include <WtsApi32.h> #include <UserEnv.h> #include <iostream> #include <fstream> #include <atlbase.h> static const char* const lpServiceName = "ProtectService"; static SERVICE_STATUS_HANDLE hServiceStatus = NULL; static SERVICE_STATUS ServiceStatus = {0}; static char szCurDir[MAX_PATH+1] = {0}; static bool bRun = false; static HANDLE hProcess = NULL; static FILE* fLog = NULL; static std::ofstream ofs_log; bool InstallService(); VOID WINAPI ServiceMain(DWORD dwArgc,LPTSTR *lpszArgv); VOID WINAPI HandlerFunc(DWORD dwControl); HANDLE RunAsLoggedUser(const char* lpPath,char* lpCmdLine); void WorkFunc(); int main(int argc, char **argv) { GetModuleFileName(NULL,szCurDir,MAX_PATH); *strrchr(szCurDir,'\') = '