撰寫程式取得 Windows Mobile 行動裝置的識別碼 ( UniqueID )
更多文章,請到我在點部落所建立的部落格「.NET菜鳥自救會」閱讀
http://www.dotblogs.com.tw/chou/
簡介
如何撰寫程式取得 Windows Mobile 行動裝置的識別碼 ( UniqueID )
方法
使用 Windows API 中的 GetDeviceUniqueID : 此函式回傳裝置識別碼,我們可以應用此識別碼去辨識行動裝置。
關於 GetDeviceUniqueID 使用可參考 pinvoke.net 內的說明

程式碼
using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
// System.Runtime.InteropServices 命名空間 : 提供各種支援 COM Interop 和平台叫用服務的成員
using System.Runtime.InteropServices;
namespace GetDeviceUniqueID
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        [DllImport("coredll.dll")]
        private extern static int GetDeviceUniqueID([In, Out] byte[] appdata,
                                                    int cbApplictionData,
                                                    int dwDeviceIDVersion,
                                                    [In, Out] byte[] deviceIDOuput,
                                                    out uint pcbDeviceIDOutput);
        private void btnGetUniqueID_Click(object sender, EventArgs e)
        {
            this.txtUniqueID.Text = string.Empty;
            byte[] id = GetDeviceID("myAppName");
            for (int i = 0; i < id.Length; i++)
            {
                txtUniqueID.Text += id[i].ToString("X2");  // 將取得的 UniqueID 轉換成大寫16進制
                txtUniqueID.Text += "-";
            }
            txtUniqueID.Text = txtUniqueID.Text.TrimEnd('-');
        }
        private byte[] GetDeviceID(string AppString)
        {
            byte[] AppData = Encoding.Unicode.GetBytes(AppString);
            int appDataSize = AppData.Length;
            byte[] DeviceOutput = new byte[20];
            uint SizeOut = 20;
            GetDeviceUniqueID(AppData, appDataSize, 1, DeviceOutput, out SizeOut);
            return DeviceOutput;
        }
    }
}
