程序复制.erlang.cookie后哈希不匹配,无法创建RabbitMQ用户求助
问题根源
这大概率是Windows文件系统重定向导致的:如果你的程序是32位的,当它访问C:\Windows\system32时,系统会自动重定向到C:\Windows\SysWOW64,而真正的.erlang.cookie在system32\config\systemprofile下,你实际复制的是SysWOW64目录里不存在或错误的文件,所以哈希不匹配。
解决方案
使用Sysnative路径绕过重定向
把复制命令里的system32替换为Sysnative,这个路径是系统提供的特殊别名,专门让32位程序访问64位的system32目录:copy C:\Windows\Sysnative\config\systemprofile\.erlang.cookie %UserProfile%\.erlang.cookie编译为64位程序
如果你的项目支持,直接把程序编译成64位版本,这样访问C:\Windows\system32时不会被重定向,能正确读取目标文件。用PowerShell命令复制
PowerShell的文件操作不受文件系统重定向影响,执行以下命令:Copy-Item -Path "C:\Windows\system32\config\systemprofile\.erlang.cookie" -Destination "$env:UserProfile\.erlang.cookie" -Force在程序里调用PowerShell执行这条命令即可。
直接用Win32文件API复制
跳过命令行,在程序里调用CopyFile等Win32 API直接复制文件,这样可以完全绕开命令行的环境问题,也能避免重定向影响(如果是32位程序,记得调用Wow64DisableWow64FsRedirection临时禁用重定向后再复制)。
验证方法
复制完成后,手动对比两个文件的哈希值,或者直接尝试执行RabbitMQ的用户创建命令,确认是否正常工作。
内容的提问来源于stack exchange,提问作者V1rtual
相关产品推荐
相关产品推荐

