OSDN Git Service

collect some files' permissions
[yamy/yamy.git] / yamy.cpp
old mode 100755 (executable)
new mode 100644 (file)
index be64fc9..6d15f84
--- a/yamy.cpp
+++ b/yamy.cpp
@@ -3,58 +3,66 @@
 \r
 #include <windows.h>\r
 #include <tchar.h>\r
+#include "stringtool.h"\r
 #include "mayurc.h"\r
 \r
 /// main\r
 int WINAPI _tWinMain(HINSTANCE i_hInstance, HINSTANCE /* i_hPrevInstance */,\r
-                    LPTSTR /* i_lpszCmdLine */, int /* i_nCmdShow */)\r
+                                        LPTSTR /* i_lpszCmdLine */, int /* i_nCmdShow */)\r
 {\r
-  typedef BOOL (WINAPI* ISWOW64PROCESS)(HANDLE hProcess, PBOOL Wow64Process);\r
-  BOOL isWow64;\r
-  ISWOW64PROCESS pIsWow64Process;\r
-  STARTUPINFO si;\r
-  PROCESS_INFORMATION pi;\r
-  BOOL result;\r
-  TCHAR *yamyPath = _T("yamy32");\r
-\r
-  pIsWow64Process =\r
-    (ISWOW64PROCESS)::GetProcAddress(::GetModuleHandle(_T("kernel32.dll")),\r
-                                    "IsWow64Process");\r
-  ZeroMemory(&pi,sizeof(pi));\r
-  ZeroMemory(&si,sizeof(si));\r
-  si.cb=sizeof(si);\r
-\r
-  if (pIsWow64Process)\r
-  {\r
-    result = pIsWow64Process(::GetCurrentProcess(), &isWow64);\r
-    if (result != FALSE && isWow64 == TRUE)\r
-    {\r
-      yamyPath = _T("yamy64");\r
-    }\r
-  }\r
-\r
-  result = CreateProcess(yamyPath, yamyPath, NULL, NULL, FALSE,\r
-                        NORMAL_PRIORITY_CLASS, 0, NULL, &si, &pi);\r
-\r
-  if (result == FALSE)\r
-  {\r
-    TCHAR buf[1024];\r
-    TCHAR text[1024];\r
-    TCHAR title[1024];\r
-\r
-    LoadString(i_hInstance, IDS_cannotInvoke,\r
-              text, sizeof(text)/sizeof(text[0]));\r
-    LoadString(i_hInstance, IDS_mayu,\r
-              title, sizeof(title)/sizeof(title[0]));\r
-    _stprintf_s(buf, sizeof(buf)/sizeof(buf[0]),\r
-               text, yamyPath, GetLastError());\r
-    MessageBox((HWND)NULL, buf, title, MB_OK | MB_ICONSTOP);\r
-  }\r
-  else\r
-  {\r
-    CloseHandle(pi.hThread);\r
-    CloseHandle(pi.hProcess);\r
-  }\r
-\r
-  return 0;\r
+       typedef BOOL (WINAPI* ISWOW64PROCESS)(HANDLE hProcess, PBOOL Wow64Process);\r
+       BOOL isWow64;\r
+       ISWOW64PROCESS pIsWow64Process;\r
+       STARTUPINFO si;\r
+       PROCESS_INFORMATION pi;\r
+       BOOL result;\r
+       tstring yamyPath;\r
+       _TCHAR exePath[GANA_MAX_PATH];\r
+       _TCHAR exeDrive[GANA_MAX_PATH];\r
+       _TCHAR exeDir[GANA_MAX_PATH];\r
+\r
+       GetModuleFileName(NULL, exePath, GANA_MAX_PATH);\r
+       _tsplitpath_s(exePath, exeDrive, GANA_MAX_PATH, exeDir, GANA_MAX_PATH, NULL, 0, NULL, 0);\r
+       yamyPath = exeDrive;\r
+       yamyPath += exeDir;\r
+\r
+       pIsWow64Process =\r
+               (ISWOW64PROCESS)::GetProcAddress(::GetModuleHandle(_T("kernel32.dll")),\r
+                                                                                "IsWow64Process");\r
+       ZeroMemory(&pi,sizeof(pi));\r
+       ZeroMemory(&si,sizeof(si));\r
+       si.cb=sizeof(si);\r
+\r
+       if (pIsWow64Process) {\r
+               result = pIsWow64Process(::GetCurrentProcess(), &isWow64);\r
+               if (result != FALSE && isWow64 == TRUE) {\r
+                       yamyPath += _T("yamy64");\r
+               } else {\r
+                       yamyPath += _T("yamy32");\r
+               }\r
+       } else {\r
+               yamyPath += _T("yamy32");\r
+       }\r
+\r
+       result = CreateProcess(yamyPath.c_str(), NULL, NULL, NULL, FALSE,\r
+                                                  NORMAL_PRIORITY_CLASS, 0, NULL, &si, &pi);\r
+\r
+       if (result == FALSE) {\r
+               TCHAR buf[1024];\r
+               TCHAR text[1024];\r
+               TCHAR title[1024];\r
+\r
+               LoadString(i_hInstance, IDS_cannotInvoke,\r
+                                  text, sizeof(text)/sizeof(text[0]));\r
+               LoadString(i_hInstance, IDS_mayu,\r
+                                  title, sizeof(title)/sizeof(title[0]));\r
+               _stprintf_s(buf, sizeof(buf)/sizeof(buf[0]),\r
+                                       text, yamyPath, GetLastError());\r
+               MessageBox((HWND)NULL, buf, title, MB_OK | MB_ICONSTOP);\r
+       } else {\r
+               CloseHandle(pi.hThread);\r
+               CloseHandle(pi.hProcess);\r
+       }\r
+\r
+       return 0;\r
 }\r