From 367b5439e103c0d7fe87edf971d29245206aa6f7 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Sat, 14 Jun 2014 12:52:06 -0700 Subject: [PATCH] Run icacls.exe twice, once for each change - GitHub issue #71 --- node/Utils.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/node/Utils.cpp b/node/Utils.cpp index 483634751..a1cdc8df3 100644 --- a/node/Utils.cpp +++ b/node/Utils.cpp @@ -265,7 +265,12 @@ void Utils::lockDownFile(const char *path,bool isDir) CloseHandle(processInfo.hThread); } */ - if (CreateProcessA(NULL,(LPSTR)(std::string("C:\\Windows\\System32\\icacls.exe \"") + path + "\" /inheritance:d /remove *S-1-5-32-545 /Q").c_str(),NULL,NULL,FALSE,0,NULL,NULL,&startupInfo,&processInfo)) { + if (CreateProcessA(NULL,(LPSTR)(std::string("C:\\Windows\\System32\\icacls.exe \"") + path + "\" /inheritance:d /Q").c_str(),NULL,NULL,FALSE,0,NULL,NULL,&startupInfo,&processInfo)) { + WaitForSingleObject(processInfo.hProcess,INFINITE); + CloseHandle(processInfo.hProcess); + CloseHandle(processInfo.hThread); + } + if (CreateProcessA(NULL,(LPSTR)(std::string("C:\\Windows\\System32\\icacls.exe \"") + path + "\" /remove *S-1-5-32-545 /Q").c_str(),NULL,NULL,FALSE,0,NULL,NULL,&startupInfo,&processInfo)) { WaitForSingleObject(processInfo.hProcess,INFINITE); CloseHandle(processInfo.hProcess); CloseHandle(processInfo.hThread);