Ikon Pengguna Individu untuk Windows 7 & Windows Vista - Bagaimana Untuk

Ikon Pengguna Individu untuk Windows 7 & Windows Vista

Saya telah bingung oleh usus Microsoft untuk memberi kami ikon pengguna yang bagus ini di menu permulaan dan log masuk skrin, tetapi letakkannya di lokasi pusat dan tidak memberikan penjelasan yang nyata tentang cara menyesuaikannya. Berikut ialah penyelesaian bagaimana cara memohon gambar pengguna bagi pengguna tersebut. Ia adalah estetik semata-mata dan justifikasi sebenar yang saya dapat buat untuk ini adalah ia boleh digunakan untuk tujuan keselamatan.

** Kemas kini **
Saya telah melupakan projek ini, tetapi baru-baru ini telah menilai penyelesaian ini untuk pelanggan. Saya telah mengemaskini cara ini sekarang.

6 langkah total

Langkah 1: Kata Pengantar

Perkara pertama dahulu; kita memerlukan pangkalan data terpusat untuk menyimpan imej-imej ini. Pangkalan data ini juga perlu hubungan dengan akaun pengguna mereka. Beruntung untuk kami, Perkhidmatan Domain Direktori Aktif mempunyai ciri khusus untuk menyimpan imej pengguna. Atribut ini dipanggil atribut thumbnailPhoto. Atribut thumbnailPhoto telah wujud dalam ADDS sejak tahun 2000, tetapi kini kini akhirnya digunakan sepanjang aplikasi. Beberapa aplikasi nota adalah Outlook (> 2010), Lync, dan Sharepoint. Satu peringatan atribut ini walaupun, ia adalah medan byte; bermakna anda tidak boleh memuat naik imej dan memanggilnya dengan baik (walaupun terdapat utiliti lain yang membenarkan ini). Sekali lagi kami bernasib baik, kerana percambahan PowerShell, menukar fail ke format byte mereka sangat mudah. Juga, saya menjaga sistem jpg> byte> jpg untuk kesinambungan; walaupun secara teorinya anda boleh menukar imej tengah-aliran.

Langkah 2: Pencapaian Imej

Tanamkan imej ke dimensi persegi.

Saiz semula dan / atau memampatkan imej supaya kurang dari 100KB.

Langkah 3: Tetapkan Atribut

Kod di bawah PowerShell akan menetapkan atribut thumbnailPhoto pengguna pengguna yang ditentukan kepada versi byte imej yang anda tentukan.

Import-Module ActiveDirectory
$ photo = [byte []] (gc path to edited photos user1.jpg -Encoding Byte)
Pengguna Set-ADUser1 -Replace @ {thumbnailPhoto = $ photo}

Langkah 4: Buat GPO untuk Tetapkan Imej Lalai

Setup satu dasar komputer dan satu pilihan pengguna untuk mencapai ini.

Konfigurasi Komputer => Keutamaan => Tetapan Windows => Fail => Fail Baru
Tindakan: Gantikan
Fail Sumber: domain.com netlogon domainLogo.bmp
Fail Destinasi: C: ProgramData Microsoft Akaun Pengguna Gambar user.bmp

Konfigurasi Pengguna => Dasar => Tetapan Windows => Skrip => Logon => Tambah
Nama: domain.com netlogon executeUserTile.ps1

Langkah 5: Kod untuk melaksanakanUserTile.ps1

# Melaksanakan PowerShell dalam mod STA (Single Threaded Apartment) dan kemudian melaksanakan skrip sebenar.
powershell -sta domain.com NETLOGON userTile.ps1

Langkah 6: Kod untuk userTile.ps1

##################################################################################
# Skrip PowerShell yang ditulis oleh Michael Soule #
#
# C Kod sumber tajam. Kredit untuk penemuan titik soket DLL pergi ke http://joco.name/ #
##################################################################################

$ source = @ "
[DllImport ("shell32.dll", EntryPoint = "# 262", CharSet = CharSet.Unicode, PreserveSig = false)]
extern statik awam kosong SetUserTile (nama pengguna rentetan, int apa pun, picpath tali);

[STAThread]
void Public static ChangeUserTile (pengguna rentetan, string picPath) {
SetUserTile (pengguna, 0, picPath);
}
'@

# Ambil nama Pengguna, Domain, dan Jalan Temp masing-masing.
$ username = $ env: USERNAME
$ domain = $ env: USERDOMAIN
$ temp = $ env: TEMP

# Mendapatkan nilai atribut gambarPhoto pengguna pengguna saat ini.
$ photo = ([ADSISEARCHER] "samaccountname = $ ($ username)"). findone (). properties.thumbnailphoto
# Simpan imej kecilAntikan atribut foto ke fail imej dalam folder sementara pengguna.
$ foto | set-content $ temp $ domain + $ username.jpg -Encoding byte

# Instantiate kod C Sharp.
Program Sumber Tambah-Jenis -MemberDefinisi -Namespace DMD -Name
# Panggil kaedah C Sharp dan lulus nama pengguna dan fail imej.
[DMD.Program] :: ChangeUserTile ("$ domain $ username", "$ temp $ domain + $ username.jpg")

Ini adalah pelaksanaan yang agak bersih dari ciri ini. Malangnya, saya tidak mendapat ini untuk bekerja di Windows8.
Contoh video cara ini berfungsi: http://youtu.be/eov3JLvwK2E

Sumber yang digunakan:
http://www.myotherpcisacloud.com/post/2011/12/02/More-Pictures-with-AD-thumbnailPhoto.aspx
http://joco.name/2010/12/06/i-discovered-the-new-windows-user-tile-api/
http://blogs.technet.com/b/stefan_gossner/archive/2010/05/07/using-csharp-c-code-in-powershell-scripts.aspx
http://blog.cjwdev.co.uk/2010/11/03/the-thumbnailphoto-attribute-explained/
http://www.moe.am/?s=active+directory+user+picture
http://gallery.technet.microsoft.com/scriptcenter/Set-UserTileFromAD-99029716
http://technet.microsoft.com/en-us/library/hh849914.aspx
http://csharp.net-tutorials.com/classes/method-overloading/
http://depsharee.blogspot.com/2011/06/powershell-sta-and-mta.html