Mono を使用して Mac 用の Windows アプリケーションをインポートしています。Mac では DPAPI を使用できません。また、Mac でユーザー レベル プログラム用にメインボード/CPU ID を取得する際に制限があると思います。変更されない一意のシステム ID を取得します。
質問する
1541 次
1 に答える
3
まず、MAC アドレスは変更される可能性があり (スプーフィングまたはハードウェアの変更)、10.3/4 以降はあまり Mac らしい方法ではないため、MAC アドレスの使用は避けてください。システム ID を取得します。コマンドラインにドロップして、man ioreg
同じ詳細を確認します。
したがって、Xamarin.Mac を使用しているかどうかは不明です。使用している場合は、IOKit IORegistryEntryFromPath/IORegistryEntryCreateCFProperty API のバインディングを行うことができます。これらは現在 C# ラッパーにあるとは思えませんが、私が使用する本当に簡単な方法は:
using System;
using System.Diagnostics;
using System.Text;
namespace uuidmac
{
class MainClass
{
static string MacUUID ()
{
var startInfo = new ProcessStartInfo () {
FileName = "sh",
Arguments = "-c \"ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformUUID/'\"",
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
RedirectStandardInput = true,
UserName = Environment.UserName
};
var builder = new StringBuilder ();
using (Process process = Process.Start (startInfo)) {
process.WaitForExit ();
builder.Append (process.StandardOutput.ReadToEnd ());
}
return builder.ToString ();
}
public static int Main (string[] args)
{
Console.WriteLine (MacUUID ());
return 0;
}
}
}
出力例:
"IOPlatformUUID" = "9E134619-9999-9999-9999-90DC147C61A9"
「IOPlatformUUID」の代わりに「IOPlatformSerialNumber」を解析することもできます。人間が読めるものが必要な場合は、誰かがテクニカルサポートコールの「この Mac について」のメインダイアログで見つけることができます...
MS DPAPI のように情報の保存と保護を検討している場合、KeyChain はそれを行う場所です (OSX/iOS)。Mono には、x-plat ベースの DPAPI 暗号化 API がいくつかあります。
于 2015-07-30T05:50:47.093 に答える