使用 Golang 限制可执行文件的单个实例

2024-02-12

我一次只需要允许 Golang 可执行文件的一个实例。我不确定如何使用全局互斥体来确保没有其他实例正在运行。

这将在 Windows 机器上运行。


我知道这个主题有点老了,但我最近在 Windows 上需要它,我将在这里发布我是如何做到的,以防其他人需要。

感谢@VonC 为我指明了正确的方向。

var (
    kernel32        = syscall.NewLazyDLL("kernel32.dll")
    procCreateMutex = kernel32.NewProc("CreateMutexW")
)

func CreateMutex(name string) (uintptr, error) {
    ret, _, err := procCreateMutex.Call(
        0,
        0,
        uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(name))),
    )
    switch int(err.(syscall.Errno)) {
    case 0:
        return ret, nil
    default:
        return ret, err
    }
}

// mutexName starting with "Global\" will work across all user sessions
_, err := CreateMutex("SomeMutexName")

我创建了一个带有更完整示例的库:https://github.com/rodolfoag/gow32 https://github.com/rodolfoag/gow32

Thx!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Golang 限制可执行文件的单个实例 的相关文章

  • 如何列出静态链接的 python 版本中可用的所有 openssl 密码?

    在python 2 7 8到2 7 9升级中 ssl模块从使用更改为 DEFAULT CIPHERS DEFAULT aNULL eNULL LOW EXPORT SSLv2 to DEFAULT CIPHERS ECDH AESGCM D
  • Windows 上本机 C++ 应用程序中的自动死代码检测?

    背景 我有一个用原生 C 编写的应用程序 花了几年的时间 大约有 60 KLOC 有很多函数和类已经死了 可能有 10 15 就像下面提出的类似的基于 Unix 的问题 我们最近开始对所有新代码进行单元测试 并尽可能将其应用于修改后的代码
  • 在 System.Windows.Forms.RichTextBox 中禁用 VScrollbar 的绘制

    我有一个继承自 RichTextBox 的自定义控件 该控件能够 禁用 富文本编辑 我通过在 TextChanged 事件期间将 Rtf 属性设置为 text 属性来实现此目的 这就是我的代码的样子 private bool lockTex
  • 当涉及多个渠道时,select 如何工作?

    我发现在多个非缓冲通道上使用 select 时 例如 select case lt chana case lt chanb 即使两个通道都有数据 但在处理此选择时 case chana 和 case chanb 的跟注不平衡 package
  • 如何追踪手柄泄漏?

    在我的一个应用程序中 我观察到句柄数量不断增加 在不使用应用程序的情况下 该数字大约每秒增加一次 因此后台处理代码的某些部分一定存在句柄泄漏 我如何追踪此类泄漏 有什么工具可以帮助解决这个问题吗 跟踪句柄泄漏时要寻找哪些模式 导致手柄泄漏的
  • 为什么奇数的切片容量与偶数的切片行为不同

    我注意到 当容量为奇数时 切片的容量会以不同的方式表现 更具体地说 当向切片添加元素时 切片的容量为doubled当原始容量为偶数时 但当原容量为奇数时 容量为增加一 然后加倍 例子 s make int 28 28 s append s
  • 为什么结构中“[0]byte”的位置很重要?

    0 byte在golang中不应该占用任何内存空间 但这两个结构体的大小不同 type bar2 struct A int 0 byte type bar3 struct 0 byte A int 那么为什么这个位置 0 byte这里重要吗
  • win32 API 和 .NET 框架之间的选择

    我必须开发一个适用于 Windows 的应用程序 该应用程序将能够通过网络摄像头识别手势来控制鼠标 我将使用 vc 2008 进行开发 但我很困惑是使用 NET 框架还是核心 win32 API 性能对于我的应用程序非常重要 根据 Ivor
  • 如何在 Go 应用程序中处理打开/关闭数据库连接?

    我的 Web API 应用程序中有一组函数 他们对 Postgres 数据库中的数据执行一些操作 func CreateUser db err sql Open postgres user postgres password passwor
  • Scala 2.9 无法在 Windows XP 上运行“hello world”示例

    我正在尝试在 Windows XP 上使用 scala 2 9 1 Final 运行 HelloWorld 示例 object HelloWorld extends App println Hello World 文件另存为Hello sc
  • 如何确定登录的Windows帐户是否已在域上进行身份验证[重复]

    这个问题在这里已经有答案了 可能的重复 在客户端 服务器应用程序中使用 Active Directory 对用户进行身份验证 https stackoverflow com questions 1337923 authenticating
  • 使用 CreateRestrictedToken(LUA_TOKEN) 从提升的进程创建低/中进程

    我正在尝试从提升的进程创建中或低完整性进程 我知道还有其他类似的问题 但它们主要关注使用资源管理器或任务计划程序等解决方法 我想坚持使用CreateRestrictedToken CreateProcessAsUser 我认为一定可以以某种
  • Windows“findstr”命令:排除包含特定字符串的结果

    到命令findstr str1 我想添加一些内容来排除包含该字符串的结果str2 在Linux中 这样做的方法是添加 grep v str2 to grep str1 当然 是否有一个等效的标志 v在 Windows 中 是否有一个等效的标
  • 在 powershell 脚本中以不同用户身份本地运行代码块

    这是非常简单的事情 但我就是无法让任何东西发挥作用 我想在特定用户下的 powershell 脚本中运行块代码 关键字是locally我正在使用 powershell 2 0 Invoke Command 似乎需要远程主机 我运行以下命令
  • 展平嵌套结构会导致切片的切片

    所以我有一个像这样的结构 type Bus struct Number string Name string DirectStations Station Station is another struct ReverseStations
  • Windows 上的 Node.js 和 Express

    今晚 我决定尝试在我的 Windows 7 计算机上使用 Express 构建一个简单的 Node js 应用程序 安装过程还算顺利 但 Express 拒绝配合 以下是我已采取的步骤 使用以下位置提供的 MSI 安装 Node jshtt
  • 每个进程每个线程的时间量

    我有一个关于 Windows 和 Linux 中进程和线程的时间量子的问题 我知道操作系统通常为每个线程提供固定的时间量 我知道时间量根据前台或后台线程而变化 也可能根据进程的优先级而变化 每个进程有固定的时间量吗 例如 如果操作系统为每个
  • 如何在特定文件夹中运行 shell 命令

    我可以用这个out err exec Command git log Output 获取将在与可执行位置相同的路径中运行的命令的输出 如何指定要在哪个文件夹中运行命令 exec Command https golang org pkg os
  • Node.js + Socket.io + Windows 7 / 8?

    我一直在到处寻找 但似乎找不到解决方案 是否可以在 Windows 7 上的 Node js 上安装 Socket io 如果没有 是否有某种替代方案 或者您知道未来有任何 Windows 支持吗 通常使用 Node js 包管理器 但是我
  • 匿名结构和空结构

    http play golang org p vhaKi5uVmm http play golang org p vhaKi5uVmm package main import fmt var battle make chan string

随机推荐

  • 带有错误句柄的自定义验证 Ninja 表单

    我在 WordPress 安装中使用 Ninja Form 插件 我的表单有 3 个输入文本字段 在按下提交按钮后 我需要通过检查输入的值是否存在于我的数据库中的自定义表中来验证此输入之一 如果该值尚不存在 则不会发生任何情况 Ninja
  • Python argparse 条件要求

    如何设置 argparse 如下 if 2 is on the command line no other arguments are required if 2 is not on the command line 3 and 4 arg
  • Java 电子邮件监听器

    我遇到了 IdleManager 类和 watch 方法 它使 imap 文件夹保持打开状态 并且理论上正在监视新消息 但如何让它在新电子邮件到达时输出或通知 代码 public static void main String args t
  • 报表查看器.rdlc 如何传递参数?

    显然 我一直在 C Windows 表单中制作试算表报告 报告查看器 其中显示 帐户 的年度报告及其每个帐户中的应付总额 该报告具有假定的年度复利值 具体取决于用户的选择 ex Jan 1 2013 to Feb 1 2014 将会有一个复
  • IDEA 以及如何禁用 gradle 包装器生成?

    我是 IJ IDEA 和 Gradle KTS 的新手 我手动创建了 kts 并将其导入到 IJ 中 IDEA 已经生成了 gradle 包装器 但我不想要这个 如果我删除 gradle 包装器和关联的目录 IDEA 会提示我从 gradl
  • 有没有办法用 FireMonkey 添加提示或工具提示?

    我已经搜索过但找不到任何东西 有没有办法用 FireMonkey 添加提示或工具提示 是否有可用的组件可以实现此目的 理想情况下 我正在寻找这样的东西 标注类型工具提示 对于搁置此问题的版主 我正在寻找有关如何实现此目标的源代码行 而不是购
  • jQuery 验证插件:如何强制验证以前有效的字段?

    我正在使用 jQuery 验证插件来验证表单 您知道如何强制重新验证吗以前成功过 fields 我已使用以下检查尝试了 form 函数 这是在用户单击 提交 后执行的 if form1 validate form false formVal
  • 如何将 SVG 对象插入到带有链接的 HTML 中?

    我不想添加到 svg 的链接 这是不可能的 因为 svg 不是我提供的 但想添加一个链接 例如 a href img src foo svg a 只是这一次不是img but a object 这样我就可以包含一个 svg 它适用于某些浏览
  • 如何让Jqgrid冻结列自动换行

    我正在使用最新的 jqgrid 包 4 4 5 我想让标题栏自动换行 我读了奥列格answer https stackoverflow com questions 8686616 how can i get jqgrid frozen co
  • Python BeautifulSoup:通配符属性/id搜索

    我有这个 dates soup findAll div id date 但是 我需要 id 作为通配符搜索 因为id can be date 1 date 2 etc 您可以提供可调用作为过滤器 dates soup findAll div
  • 如何访问 rowdatabound 上的 gridview 列?

    我想在值为 1 时将 gridview 列的值更改为活动状态 我有类似的 gridview 列
  • 为什么在类中实现的 C# 接口方法必须是公共的?

    我有一个继承接口的类 接口成员方法在我的类中实现 没有访问修饰符 因此 默认情况下它是 private 我收到错误 无法实现接口成员 因为它不是公共的 为什么不允许 我不能覆盖可访问性吗 这是一个例子why能够覆盖可见性是没有意义的 int
  • 在调整大小时保存 NSWindow 大小并为用户关闭

    我注意到 OS X 上的所有应用程序似乎都会保存您设置的大小 下次打开它时 它通常处于相同的位置和大小 我正在制作一个应用程序 我注意到调整大小后 如果我再次启动应用程序 它的大小只是我在 Xcode 4 的 IB 中设置的大小 而不是我在
  • 检查是否连接了打印机

    Windows 中有没有一种方法 在 Windows CE 中工作 来检查打印机是否已连接并与 C 中的 LPT1 进行通信 Edit 更多信息 我们目前正在使用通用 Windows CE 打印机驱动程序 pcl dll 通过将其传递到Cr
  • 将 Perfmon 分析解释为特定于应用程序的观察/数据的最佳方法是什么?

    我们很多人都使用过Perfmon工具来进行性能分析 特别是对于 Net 计数器 但 Perfmon 中存在太多变量 因此总是很难将 Perfmon 结果解释为有关我的应用程序的有价值的反馈 我想使用 perfmon 不是像蚂蚁分析器 htt
  • 如果我们是有效用户,我们可以克隆存储库吗?

    我是 Git 新手 所以如果这是一个愚蠢的问题 请原谅 在我们的组织中 我们使用 Git 作为存储库 我可以这样做git checkin checkout pull 从我的办公室机器 我们的 Git 存储库 URL 是这样的 但由于限制我无
  • 如何使 Flex Row 响应式 Bootstrap 4

    目前页面如下所示 现在 调整大小到移动屏幕时 弹性框会溢出容器 Html div class d flex flex row text white text center div class port item p 4 bg primary
  • 如何修改 C 程序以便 gprof 可以分析它?

    当我在我的 C 程序上运行 gprof 时 它说我的程序没有累积时间 并且所有函数调用都显示 0 时间 但是它确实对函数调用进行计数 如何修改我的程序 以便 gprof 能够计算某项运行所需的时间 编译的时候有没有指定 pg http so
  • 通过解析纯文本文件生成数据结构

    我为我正在编写的游戏编写了一个文件解析器 以便自己轻松更改游戏的各个方面 例如角色 舞台 碰撞数据 例如 我可能有一个像这样的字符类 class Character public int x y Character s location C
  • 使用 Golang 限制可执行文件的单个实例

    我一次只需要允许 Golang 可执行文件的一个实例 我不确定如何使用全局互斥体来确保没有其他实例正在运行 这将在 Windows 机器上运行 我知道这个主题有点老了 但我最近在 Windows 上需要它 我将在这里发布我是如何做到的 以防