gpt4 book ai didi

linux - 是否可以在没有 WMI 的情况下在 C# 中获取 linux 和 windows 上的 HWID?

转载 作者:太空宇宙 更新时间:2023-11-04 11:37:29 25 4
gpt4 key购买 nike

您好 :) 我正在编写一个 C# 应用程序,需要获取运行该代码的计算机的 HWID 代码。由于这是一个控制台,我需要想办法找到 CPU、主板和 HDD 的 HWID,使用 WMI。由于 system.management 在 linux 上不可用,我需要它而不使用它。是否可以在没有 WMI 的情况下找到 HWID?或者我能找到一种使用 WMI for linux 来查找 HWID 的方法吗?

在 C# 中可以做到这一点吗?如果有人告诉我如何做,或者指出正确的入门方向,我将不胜感激。谢谢你们!

最佳答案

试试这个链接,但不确定它是否适用于 linux。

已更新

private string GetUID()
{
StringBuilder strB = new StringBuilder();
Guid G = new Guid(); HidD_GetHidGuid(ref G);

strB.Append(Convert.ToString(G));

IntPtr lHWInfoPtr = Marshal.AllocHGlobal(123); HWProfile lProfile = new HWProfile();
Marshal.StructureToPtr(lProfile, lHWInfoPtr, false);

if (GetCurrentHwProfile(lHWInfoPtr))
{
Marshal.PtrToStructure(lHWInfoPtr, lProfile);
strB.Append(lProfile.szHwProfileGuid.Trim(new char[] { '{', '}' }));
}
Marshal.FreeHGlobal(lHWInfoPtr);

SHA256CryptoServiceProvider SHA256 = new SHA256CryptoServiceProvider();
byte[] B = Encoding.Default.GetBytes(strB.ToString());

string outStr = BitConverter.ToString(SHA256.ComputeHash(B)).Repla ce("-", null);

for(int i = 0;i < 64; i++)
{
if (i % 16 == 0 && i != 0)
outStr = outStr.Insert(i, "-");
}

return (outStr);
}

[DllImport("hid.dll")]
private static extern void HidD_GetHidGuid(ref Guid GUID);

[DllImport("advapi32.dll", SetLastError = true)]
static extern bool GetCurrentHwProfile(IntPtr fProfile);

[StructLayout(LayoutKind.Sequential)]
class HWProfile
{
public Int32 dwDockInfo;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 39)]
public string szHwProfileGuid;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
public string szHwProfileName;
}

关于linux - 是否可以在没有 WMI 的情况下在 C# 中获取 linux 和 windows 上的 HWID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6721572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com