summaryrefslogtreecommitdiff
path: root/node/Utils.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@zerotier.com>2014-01-26 10:21:43 -0800
committerAdam Ierymenko <adam.ierymenko@zerotier.com>2014-01-26 10:21:43 -0800
commit22efa1ab53fcd484657161841468810b43ea1d0d (patch)
tree466c27b67bb148a6c8c5b37017cbe91addd3e9f6 /node/Utils.cpp
parentf19d1e253afe690075bb311e708844b8a026fa36 (diff)
downloadinfinitytier-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.cpp15
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
}