Python访问被本地系统

时间:2015-12-28 08:03:05

标签: python memory-mapped-files

我正在尝试从另一个用户访问SYSTEM创建的内存映射文件。 我正在使用python freeze exe运行Windows服务。该服务作为本地SYSTEM运行。在服务中我创建了一个mmap文件(使用python mmap模块) 我稍后在登录用户下创建另一个进程,并尝试访问mmap文件,但得到一个

  

WindowsError:[错误5]访问被拒绝

我能够将问题简化为以下内容:

使用

将python作为本地系统运行
PsExec.exe -i -s -d python

创建一个内存映射文件 -

mmap_file = mmap.mmap(-1, 1024, tagname='Global\\test', access=mmap.ACCESS_WRITE)

现在,从用户cmd打开一个python控制台(只需运行python) 并尝试使用

打开相同的mmap文件
mmap_file = mmap.mmap(-1, 1024, tagname='Global\\test', access=mmap.ACCESS_WRITE)
再次,同样的

  

WindowsError:[错误5]访问被拒绝

如果我只是从作为同一用户运行的两个不同的python控制台运行它,代码就可以工作。

如何更改mmap文件的权限,以便SYSTEM以外的用户可以访问它?

使用python 2.7.10 Windows 7

我在服务中使用的实际代码来运行流程

appName = 'script.exe'
commandLine = 'script.exe'
session_id = 1 
security_token = win32ts.WTSQueryUserToken(session_id)
processAttributes = None
threadAttributes = None
bInheritHandles = 0
dwCreationFlags = win32process.DETACHED_PROCESS 
newEnvironment = None 
currentDirectory = None
startupinfo = win32process.STARTUPINFO()
startupinfo.lpDesktop = "winsta0\default"
process = win32process.CreateProcessAsUser(security_token, appName , commandLine , processAttributes , threadAttributes , bInheritHandles , dwCreationFlags , newEnvironment , currentDirectory , startupinfo )

0 个答案:

没有答案