Python 打开网络驱动器根目录的进程权限
打开网络驱动器的根目录需要哪个进程权限 这里,Python 打开网络驱动器根目录的进程权限,python,security,winapi,Python,Security,Winapi,打开网络驱动器的根目录需要哪个进程权限 这里,Z:\\是网络驱动器 import win32file import win32con win32file.CreateFile( 'Z:\\', win32file.GENERIC_READ | win32con.ACCESS_SYSTEM_SECURITY, win32file.FILE_SHARE_READ, None, win32file.OPEN_EXISTING, win32file.FILE_FLAG_BACK
Z:\\
是网络驱动器
import win32file
import win32con
win32file.CreateFile(
'Z:\\', win32file.GENERIC_READ | win32con.ACCESS_SYSTEM_SECURITY,
win32file.FILE_SHARE_READ, None, win32file.OPEN_EXISTING,
win32file.FILE_FLAG_BACKUP_SEMANTICS | win32file.FILE_FLAG_OPEN_REPARSE_POINT, None
)
上述情况会引发异常错误\u权限\u未\u保持
我现在已经获得了msdn上的所有进程权限,但上述操作仍然不起作用。可以在用户空间中打开网络驱动器的根目录吗
根据Harry的评论,我检查了自己是否拥有适当的特权:
with closing(win32security.OpenProcessToken(
win32process.GetCurrentProcess(), win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY
)) as token:
print(win32security.GetTokenInformation(token, win32security.TokenPrivileges))
这将返回:
((4, 2), (5, 2), (8, 2), (9, 2), (10, 2), (11, 2), (12, 2), (13, 2), (14, 2), (15, 2), (17, 2), (18, 2), (19, 2), (20, 2), (22, 2), (23, 3), (24, 2), (25, 2), (28, 2), (29, 3), (30, 3), (33, 2), (34, 2), (35, 2))
SE\u SECURITY\u NAME
具有8的LUID
,因此我想我确实拥有所需的特权。根据文档,您需要SE\u SECURITY\u NAME才能访问系统安全访问。仔细检查您是否实际获得了所请求的特权;请求您无权享有的特权不是错误,这样的请求会被默默地忽略。(也可能根本无法访问网络驱动器的根目录上的系统安全性;您实际上想做什么?@HarryJohnston我已经检查了我是否拥有您建议的适当特权,我想我有,请参阅我的更新问题。但是您在win32con.ACCESS\u SYSTEM\u SECURITY
上是正确的,如果没有此标志,对CreateFile
的调用将有效。如果您不需要ACCESS\u SYSTEM\u SECURITY,则不需要启用任何特权。(只要目标目录上的ACL授予您访问权限,FILE_FLAG_BACKUP_SEMANTICS FLAG就不需要特权。)@HarryJohnston我正在尝试调用驱动器根目录上的BackupRead
,以获取SACL,既然你这么说了,我想知道他们是否有SACL?显然,我也不能用ACCESS\u SYSTEM\u SECURITY
打开网络驱动器上的文件。那可能是个遥远的问题。