草庐IT

python - 如何在没有pywin32的情况下使用python确定Windows上的文件所有者

我正在编写一个脚本,它需要确定Windows文件所有者的用户名。虽然我找到了asolutionusingpywin32但我对使用它犹豫不决,因为我不想添加模块依赖性。该脚本将为python2.6编写,并且必须在32位和64位平台上运行。我想知道是否有不同的方法(可能是使用ctypes)来确定此信息 最佳答案 下面使用ctypes调用GetNamedSecurityInfo.最初它遵循codesnippet这在问题中有关联,但GetNamedSecurityInfo通常比GetFileSecurity更有用,特别是因为它与SetNam

python - Ctypes 优缺点

我听说Ctypes会导致Python和Windows崩溃(或停止错误)。我应该远离他们的使用吗?我从哪里听到的?当我试图控制窗口的各个方面、自动化之类的东西时,它又回来了。我听说过swig,但我经常看到Ctypes。这里有什么危险吗?如果是,我应该注意什么?我确实搜索了ctypeproconpython。 最佳答案 就健壮性而言,我仍然认为swig优于ctypes,因为可以让C编译器为您更彻底地检查;然而,由于@Mark已经提到的argtypes功能,这现在还没有实际意义(虽然它在早期的ctypes版本中显得更大)。然而,毫无疑问,

Anaconda创建python3.10环境 ,pip报错:ImportError: DLL load failed while importing _ctypes: 找不到指定的模块。

一、问题>pipTraceback(mostrecentcalllast):File"D:\Users\tangtang1600\Anaconda3\envs\automatic1\Scripts\pip-script.py",line6,infrompip._internal.cli.mainimportmainFile"D:\Users\tangtang1600\Anaconda3\envs\automatic1\lib\site-packages\pip\_internal\cli\main.py",line9,infrompip._internal.cli.autocompletion

c++ - 调试 Python ctypes 段错误

我正在尝试从特定于Windows的程序中移植一些Pythonctypes代码,以链接到我的库的Linux端口。描述我的问题的最短Python代码示例如下所示。当我尝试执行它时,我在Python中的examine_arguments()中收到段错误。我在函数调用崩溃时在我的库中放置了一个printf语句,但它从未执行过,这让我认为问题出在ctypes代码中。importctypesavidll=ctypes.CDLL("libavxsynth.so")classAVS_Value(ctypes.Structure,object):def__init__(self,val=None):se

python - ctypes 中的 const void* 指针

如果我有一个可写的buffer,我可以使用ctypes.c_void_p.from_buffer函数来获取指向该缓冲区的C指针。但是如何处理不可写的缓冲区呢?如何形成一个const指针,我可以将其传递给需要constvoid*的C代码,而无需求助于制作不可写缓冲区的可写副本?我考虑过c_void_p.from_address但缓冲区(和内存View)似乎没有公开它们的地址。一些说明:>>>importctypes>>>b=buffer("somedatathatsupportsthebufferinterface,likeastr")>>>ptr=ctypes.c_void_p.fro

python - 读取操纵杆功能

我正在尝试使用winmm.dll库读取我的操纵杆功能。这是我的做法...fromctypesimportwindll,Structure,c_uint,c_ushort,c_char,c_ulongWORD=c_ushortUINT=c_uintTCHAR=c_charwinmm=windll.LoadLibrary('winmm.dll')classJOYCAPS(Structure):_fields_=[('wMid',WORD),('wPid',WORD),('szPname',TCHAR*MAXPNAMELEN),#originallyszPname[MAXPNAMELEN](

python - ctypes 回调函数的无效结果类型

我在使用ctypes实现时遇到问题。我有2个C函数:antichain**decompose_antichain(antichain*,int,char(*)(void*,void*),void**(*)(void*));counting_function**decompose_counting_function(counting_function*);其中antichain和counting_function是两个结构。反链可以看作一个集合,包含未知类型的元素(在这个例子中,counting_function)。decompose_antichain函数将用于分解反链包含的元素的函数

python - 在 Python 中验证 ctypes 类型精度

如果API需要64位类型,我如何检查ctypes如果sizeof类型有那么多位返回字节数?我如何知道当前平台上每个字节有多少位?CHAR_BIT在哪里在Python中定义? 最佳答案 C/C++函数签名是用C/C++类型编写的,例如“int”或“double”或“uint32_t”。所有这些都有对应的ctypes等价物,因此通常您不关心位数。也就是说……importosprintos.sysconf('SC_CHAR_BIT')...我认为,您将尽可能接近。不适用于非Unix平台。正如tMC在评论中指出的那样,它甚至不能在所有Uni

Python ctypes.WinDLL 错误,找不到 _dlopen(self._name, mode)

ctypes.WinDLL("C:\ProgramFiles\AHSDK\bin\ahscript.dll")Traceback(mostrecentcalllast):File"",line1,inFile"C:\Python26\lib\ctypes\__init__.py",line353,in__init__self._handle=_dlopen(self._name,mode)WindowsError:[Error126]Thespecifiedmodulecouldnotbefound我该如何解决?我在C:\Python26\lib\ctypes\__init__.py中

python - 使用 `as_ptr()` 时如何阻止内存泄漏?

由于这是我第一次学习系统编程,所以我很难理解这些规则。现在,我对内存泄漏感到困惑。让我们考虑一个例子。假设,Rust正在抛出一个指针(指向一个字符串),Python将捕获该指针。在Rust中,(我只是发送CString的指针)usestd::ffi::CString;pubexternfndo_something()->*constc_char{CString::new(some_string).unwrap().as_ptr()}在Python中,(我取消引用指针)defcall_rust():lib=ctypes.cdll.LoadLibrary(rustLib)lib.do_so