创建tagSECURITY_ATTRIBUTES对象

时间:2014-04-07 17:46:44

标签: winapi autoit

使用_WinAPI_CreateFileMapping()我希望在同一台计算机上启用其他用户,以便通过_WinAPI_OpenFileMapping()接收消息。我尝试打开文件映射(invalid handle error #6)时收到错误,因为可能存在安全设置。

我找到了this post关于文件映射并允许跨用户访问。解决方案是创建一个NULL安全标识符(不传递NULL,但传递一个有效的安全标识符,包含NULL):

SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.NullSid, null);

如何在AutoIt中创建它并将其传递给_WinAPI_CreateFileMapping()

发送边脚本(以本地用户身份运行):

Local $sid = _Security__StringSidToSid("S-1-0")     ; also tried S-1-1
$hMapping = _WinAPI_CreateFileMapping(-1, 2048, 'MyFileMapping',0x0004,$sid)  ;it seems to accept the sid
DllStructSetData($tData, 1, "IDL")  ; if($hMapping)  send the message...

接收服务脚本(作为系统帐户运行):

$hMapping = _WinAPI_OpenFileMapping('MyFileMapping')

还试过传递只读。 0x0004返回0x0000文件句柄/ 0错误0已扩展。一旦1305错误代码(不能复制)。

;  if($hMapping) ... this is how I am trying to receive the message:
$pAddress = _WinAPI_MapViewOfFile($hMapping)
$tData = DllStructCreate('wchar[1024]', $pAddress)
$Text = DllStructGetData($tData, 1)
DllStructSetData($tData, 1, '')

1 个答案:

答案 0 :(得分:0)

尝试使用S-1-0-0代替S-1-0

<强> Source