4

root 権限なしで Linux (Ubuntu) 上の C++ プログラムからマザーボード ID を取得したいと考えています。dmidecode でこれができることは知っていますが、root 権限が必要なため、私のニーズには適していません。ルート以外の代替手段を知っている人はいますか? ソースコードは大歓迎です。

4

5 に答える 5

3
$ lshal | grep 'system\.hardware\.serial'
  system.hardware.serial = '<serial-number>'  (string)

FC11でroot以外のユーザーとして機能します。

于 2011-08-29T04:30:47.833 に答える
3

情報を取得するために root である必要はありませんが、最初に root に許可を与える必要があります。明らかに、root は自分のマシンへの安全なアクセスを許可されており、これにはハードウェア ID 情報へのアクセスが含まれます。

root はマシン上のソフトウェアができることを制御しますが、あなたのソフトウェアは root ができることを制限しません。(Linuxは、ソフトウェア ライセンスの第 1 の法則に帰結します)

root がハードウェア ID コレクターのインストールを選択した場合、そのデータを root 以外のユーザーが利用できるようにするのは比較的簡単です (ただし、root が ID コレクターを変更して嘘をつくのも比較的簡単です)。

于 2011-02-13T17:06:55.407 に答える
2

lshw がシリアルを取得するはずです。スーパーユーザーとして実行する必要があると表示されますが、それでも実行されます。(ubuntuでテスト済み)

于 2011-02-14T00:38:23.713 に答える
0

rootになる必要があると思います

/proc/pci を開くと、チップセットなどの多くの情報が得られます。/proc/ にマザーボードまたは BIOS 情報用の特定のディレクトリがあるかどうかわからない場合は、 ls /proc を見てください。

それ以外に、アプリケーションから dmidecode コマンドライン ツールを呼び出して、その出力をキャプチャすることを検討できます。これで十分でない場合は、dmidecode のソース コードを見て、どのように機能するかを確認してみてください。

アンドリュー

于 2011-02-13T16:31:03.117 に答える