mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
37 lines
1.0 KiB
Python
37 lines
1.0 KiB
Python
|
|
import platform
|
|
import subprocess
|
|
import sys
|
|
|
|
if platform.system() == 'Windows':
|
|
import ctypes
|
|
AdvAPI32 = ctypes.windll.Advapi32
|
|
|
|
from ctypes.wintypes import POINTER
|
|
|
|
UNLEN = 256
|
|
|
|
GetUserNameW = AdvAPI32.GetUserNameW
|
|
GetUserNameW.argtypes = (
|
|
ctypes.c_wchar_p, # _In_Out_ lpBuffer
|
|
POINTER(ctypes.c_uint) # _In_out_ pcBuffer
|
|
)
|
|
GetUserNameW.restype = ctypes.c_uint
|
|
|
|
buffer = ctypes.create_unicode_buffer(UNLEN + 1)
|
|
size = ctypes.c_uint(len(buffer))
|
|
GetUserNameW(buffer, ctypes.byref(size))
|
|
# For NetworkService, Host$ is returned, so we choose have to turn it back
|
|
# into something that icacls understands.
|
|
if not buffer.value.endswith('$'):
|
|
user_name = buffer.value
|
|
else:
|
|
user_name = 'NT AUTHORITY\\NetworkService'
|
|
|
|
for path in sys.argv[1:]:
|
|
subprocess.call(['icacls', path, '/deny',
|
|
'{}:(R)'.format(user_name)])
|
|
else:
|
|
for path in sys.argv[1:]:
|
|
subprocess.call(['chmod', 'a-r', path])
|