マシンは一般化オプションを使用して sysprep されるため、各インスタンスには異なる SID が必要です (カスタム イメージを提供する場合も同様です)。この質問のコードを使用して SID を取得し、それを識別子として使用できます。
string domainName;
Helper.SID_NAME_USE accountType;
SecurityIdentifier machineSID =
Helper.LookupAccountName("", Environment.MachineName, out domainName, out accountType);
注: コード内で domainName と表示されていても、これが機能するためにマシンがドメイン内にある必要はありません。
VM に「カスタム識別子」を設定するには、環境変数を使用できます。Java を使用しているため、これらを設定する最も簡単な方法は、おそらくsetx.exeコマンド ライン ツール (ダウンロード) です。次のようにツールを呼び出すことができます。
setx.exe VmIdentifier 123 -m
次に、システムを使用してそれを読み取ることができるはずです。
System.getenv("VmIdentifier")
仮想マシン (IaaS) を使用しているか、クラウド サービス (PaaS) を使用しているかは、私にはよくわかりません。仮想マシンを使用している場合、アプリケーションのデプロイはユーザー次第であり、その間にsetx.exeを実行することもできます。
Cloud Services を使用している場合は、実際にパッケージをアップロードして、インスタンスにデプロイします。また、(アプリケーションの開始前に実行される) スタートアップ タスクのサポートも得られます: How to Define Startup Task for a Role . スタートアップ タスクを使用して setx.exe を実行できますが、必ず executionContext を上位に設定して実行してください。