diff options
author | Adam Ierymenko <adam.ierymenko@zerotier.com> | 2014-01-26 10:21:43 -0800 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@zerotier.com> | 2014-01-26 10:21:43 -0800 |
commit | 22efa1ab53fcd484657161841468810b43ea1d0d (patch) | |
tree | 466c27b67bb148a6c8c5b37017cbe91addd3e9f6 /node/Utils.cpp | |
parent | f19d1e253afe690075bb311e708844b8a026fa36 (diff) | |
download | infinitytier-22efa1ab53fcd484657161841468810b43ea1d0d.tar.gz infinitytier-22efa1ab53fcd484657161841468810b43ea1d0d.zip |
Windows Installer work, fix 100% CPU bug in EthernetTap on Windows, Windows lockDownFile() implementation that uses 'cacls' utility.
Diffstat (limited to 'node/Utils.cpp')
-rw-r--r-- | node/Utils.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/node/Utils.cpp b/node/Utils.cpp index 53a67179..e91cb6a1 100644 --- a/node/Utils.cpp +++ b/node/Utils.cpp @@ -251,8 +251,19 @@ void Utils::lockDownFile(const char *path,bool isDir) #ifdef __UNIX_LIKE__ chmod(path,isDir ? 0700 : 0600); #else -#ifdef _WIN32 - // TODO: windows ACL hell... +#ifdef __WINDOWS__ + { + STARTUPINFOA startupInfo; + startupInfo.cb = sizeof(startupInfo); + PROCESS_INFORMATION processInfo; + memset(&startupInfo,0,sizeof(STARTUPINFOA)); + memset(&processInfo,0,sizeof(PROCESS_INFORMATION)); + if (CreateProcessA(NULL,(LPSTR)(std::string("C:\\Windows\\System32\\cacls.exe \"") + path + "\" /E /R Users").c_str(),NULL,NULL,FALSE,0,NULL,NULL,&startupInfo,&processInfo)) { + WaitForSingleObject(processInfo.hProcess,INFINITE); + CloseHandle(processInfo.hProcess); + CloseHandle(processInfo.hThread); + } + } #endif #endif } |