从 WSH 或其他本机 Windows 程序访问 Win32 CreateEvent/SetEvent
我需要与使用命名的程序套件进行交互。 Win32 事件(例如,CreateEvent()
API)在运行的进程之间进行通信。
我可以使用一些非常简单的 C 代码来完成此操作
h = CreateEvent(NULL, FALSE, FALSE, argv[1]);
if (h != INVALID_HANDLE_VALUE) SetEvent(h);
,但是,由于策略问题,我无法在生产计算机上安装自定义二进制文件!
有没有办法使用 Windows 脚本主机来做到这一点?
我可能会将签名的二进制文件添加到生产环境中 - 因此其他脚本语言可能是可行的。 欢迎提出建议。
I need to interface with a program suite that uses named. Win32 Events (eg, CreateEvent()
API) to communicate between running processes.
I'm able to do this with some very simple C code
h = CreateEvent(NULL, FALSE, FALSE, argv[1]);
if (h != INVALID_HANDLE_VALUE) SetEvent(h);
However, due to policy issues, I can't install custom binaries on production machines!
Is there a way to do this with Windows Scripting Host?
I could possibly get signed binaries added to the production environment - so other scripting language might be viable. Recommendations are welcome.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您只需要 Win32 事件来实现正常事件目的,则可以使用 PowerShell。 这将使您能够访问.Net 框架。 这将允许您使用托管事件类(例如 ManualResetEvent)间接访问 API。 这只是普通 CreateEvent API 之上的一个薄包装。
If you just need a Win32 event for normal eventing purposes, you could use PowerShell. This will give you access to the .Net framework. This will allow you to indirectly access the API by using a managed event class such as ManualResetEvent. This is just a thin wrapper on top of the normal CreateEvent APIs.
您自己的二进制文件进行签名。
无论谁制定了允许您运行任意 WSH 程序但不允许运行二进制文件的策略,都应该为您的代码签名证书付费。
Sign your own binaries.
Whoever instituted such a policy that allows you to run arbitrary WSH programs but not binaries should pay for your code-signing cert.
Python 有一个 PyWin32 库,允许您使用 Windows API 函数,包括 CreateEvent/SetEvent。
一般来说(并且具有不同程度的便利性),您可以使用任何允许定义和调用外部函数的语言(在本例中来自 kernel32.dll)。
Python has a PyWin32 library that allows you to use Windows API functions, including CreateEvent/SetEvent.
In general (and with different level of convenience), you could use any language that allows defining and invoking external functions (from kernel32.dll in this case).