Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyWin32是否可以为用户提供;“太多”;访问Win32 API?_Python_Security_Pywin32_Win32com - Fatal编程技术网

Python PyWin32是否可以为用户提供;“太多”;访问Win32 API?

Python PyWin32是否可以为用户提供;“太多”;访问Win32 API?,python,security,pywin32,win32com,Python,Security,Pywin32,Win32com,我正在为一个具有非常高安全标准的公用事业集团开发一个工具(出于显而易见的原因)。此工具在ESRI的ArcMap应用程序中运行(使用ArcMap API-ArcPy)。ArcFM是安装在ArcMap之上的软件,用于基于实用程序的分析(ArcFM拥有与ArcMap分离的许可证)。我正在开发的工具需要ArcPy(Python)使用PyWin32签出ArcFM许可证(参见下面的代码片段) 为了在我正在开发的工具中使用一些ArcFM功能,必须首先在脚本中签出ArcFM许可证 这段代码检查了ArcFM的许可

我正在为一个具有非常高安全标准的公用事业集团开发一个工具(出于显而易见的原因)。此工具在ESRI的ArcMap应用程序中运行(使用ArcMap API-ArcPy)。ArcFM是安装在ArcMap之上的软件,用于基于实用程序的分析(ArcFM拥有与ArcMap分离的许可证)。我正在开发的工具需要ArcPy(Python)使用PyWin32签出ArcFM许可证(参见下面的代码片段)

为了在我正在开发的工具中使用一些ArcFM功能,必须首先在脚本中签出ArcFM许可证

这段代码检查了ArcFM的许可证,因此我可以在GUI之外访问ArcFM功能。公用事业集团的IT主管一直在犹豫是否在他们的机器上安装PyWIN,因为他/她担心这会让用户过多地访问自己的计算机

据我所知,Win32不会给用户“额外”访问计算机的权限(它只允许用户通过API访问功能)。例如,如果用户没有访问注册表项的权限,Win32(或PyWin32)将不会绕过分配给该用户配置文件的任何安全设置

我理解正确吗?有什么我遗漏的吗?

重点是我的)声明:

这是Python for Win32(pywin32)扩展的自述文件,提供了从Python访问许多Windows API的权限

因此,PyWin32是WinAPI上的Python包装器(它只允许以友好的方式从Python调用它们)。不管它是否安装在Python安装上,WinAPI仍然存在,可以从以下位置访问:

  • C
  • Python(例如,使用),但是代码要复杂得多:

  • 更长时间(需要进行各种转换)
  • 可读性较差(大量“维护”代码-与业务逻辑无关)
  • 容易出错

  • 您可以检查这两种方法之间的差异(也可以检查(本文的最后一部分))

  • 其他语言

由于Pywin32没有正式的文档页面,我将引用下一个最好的东西(我发现的):

示例:

  • 既然你提到了注册处:
    • 包裹
    • 但这可能不是最好的例子,因为注册表函数也可以通过(它是Python标准库的一部分)使用
  • 另一个(与安全有关):
    • 包裹

底线 PyWin32(默认情况下)没有授予任何其他特权(权限)


然而,我试图找到一个原因来解释管理层对安装PyWin32的担忧

一般来说,专家(WINAPI领域)很可能知道:

  • C(开发人员的数量正在减少)
  • Win内部(这里也不是很多)
  • 一般计算机(低级)知识
  • 从上面的3个方面,这些用户将知道调用WINAPI的含义(如果不是,他们将很容易知道在哪里/搜索什么/调查什么以获得答案)
  • 从这些用户的视角来看,这没有什么区别。但由于可以查询PyWin32模块的内容:

    导入win32security >>> >>>打印([目录中名称的名称(win32security)(如果可调用)(getattr(win32security,name))])) ['ACL','AcceptSecurityContext','AcquireCredentialsHandle','AdjustTokenGroups','AdjustTokenPrivileges','AllocatelCallyunIQueId','CheckTokenMembership','ConvertSecurityDescriptorStringStringSecurityDescriptor','ConvertStringSecurityDescriptorSecurityDescriptor','ConvertStringStringSidtoId','CreateStrictedToken','eWellKnownSid、CredHandleType、CryptEnumProviders、CtxtHandleType、DsBind、DsCrackNames、DsGetDcName、DsGetSpn、DsListDomainsInSite、DsListInfo服务器、DsListRoles、DsListServersFordDomainSite、DsListServersInSites、DsUnBind、DsWriteAccountSpn、DuplicateTokenEx、EnumerateSecurityPackages“,”GetBinarySid“,”GetFileSecurity“,”GetKernelObjectSecurity“,”GetNamedSecurityInfo“,”GetPolicyHandle“,”GetSecurityInfo“,”GetTokenInformation“,”GetUserObjectSecurity“,”ImpersonateAnonymousToken“,”ImpersonateLoggedOnUser“,”ImpersonateNamedPipeClient“,”ImpersonateSelf“,”InitializeSecurityContext“,”IsTokenRestricted“,”LogonUser“,”,“LogonUserEx”、“LookupAccountName”、“LookupAccountSid”、“LookupPrivilegeDisplayName”、“LookupPrivilegeName”、“LookupPrivilegeValue”、“LSAADDAccounts”、“LsaCallAuthenticationPackage”、“LsaClose”、“LsaConnectUntrusted”、“LSaderRegisterLogonProcess”、“LsaEnumerateAccountRights”、“LSAENumerateAccountsWithUserRights”、“LsaEnumerateLogonSessions”、“L”saGetLogonSessionData、LsaLookupAuthenticationPackage、LsaOpenPolicy、LsaQueryInformationPolicy、LsaRegisterLogonProcess、LsaRegisterPolicyChangeNotification、LsaRemoveAccountRights、LsaRetrievePrivateData、LsaSetInformationPolicy、LSASTORRetrievatedata、LsaUnregisterPolicyChangeNotification、MapGenericTask、OpenProcessToken“,”OpenThreadToken“,”PyCredHandleType“,”PyCtXtHandletType“,”PySecBufferDescype“,”PySecBufferType“,”QuerySecurityPackageInfo“,”Restortoself“,”安全属性“,”安全描述符“,”SID“,”SecBufferDescype“,”SecBufferType“,”SetFileSecurity“,”SetNamedSecurityInfo“,”SetThreadToken“,”Set标记信息“,”SetUserObjectSecurity“,”TranslateName“,”错误“] 这可能会得到另一种用户,想法

    因此,(有争议的:错误的)关注点是,强大的权力(包括知识的权力)与可能没有处理该权力所需的重大责任的用户共享。在某些情况下,这可能导致(戏剧化一点)灾难
    #ArcFM licensing
    import win32com.client
    app = win32com.client.Dispatch("Miner.Framework.Dispatch.MMAppInitializeDispatch")
    runtime = win32com.client.Dispatch("Miner.Framework.Dispatch.MMRuntimeEnvironmentDispatch")
    app.Initialize(0x5)
    #end ArcFm licensing