2013-01-01 53 views
4

我知道這個問題已經被問了很多次,但沒有人回答我的問題。 從Comptiat A +的學習中我知道,使用自動化(無人值守)安裝時,技術人員必須返回並更改MACHINE SID,然後才能在每臺機器上激活操作系統。似乎有很多關於如何通過網絡獲取SID的問題,但是我知道還有一個不能改變的機器SID。對於那些使用Fix-It Utilities啓動盤的用戶,有一個按鈕「更改SID」,如果它已經激活,將導致Windows無法啓動。您在c#中獲取Windows安裝SID?

我的問題類似於this之一,但他的問題從來沒有真正的答案。我的問題是,如何使用c#獲得MACHINE Windows安裝SID。

回答

5

那麼,這取決於你想要哪臺計算機SID(認真!)。有本地計算機用於自己的SID ...爲此,您只需要獲取本地管理員用戶的SID,並從最後刪除「-500」以獲取計算機的SID。

在C#.NET的3.5:

using System; 
using System.Security.Principal; 
using System.DirectoryServices; 
using System.Linq; 
public static SecurityIdentifier GetComputerSid() 
{ 
    return new SecurityIdentifier((byte[])new DirectoryEntry(string.Format("WinNT://{0},Computer", Environment.MachineName)).Children.Cast<DirectoryEntry>().First().InvokeGet("objectSID"), 0).AccountDomainSid; 
} 

在另一方面,有這麼Active Directory使用,以確定每個域成員計算機的SID ...一個人,你通過得到的SID取該域中的計算機帳戶 - 以美元符號結尾的計算機帳戶。

+0

好的,謝謝你的答案。這是全球唯一的嗎? – FrostyFire

+0

@JABFreeware根據wikipedia:'在Microsoft Windows NT系列操作系統環境中,安全標識符(通常縮寫爲SID)是用戶,用戶組或其他安全主體的唯一,不可變的標識符。「In換句話說,重複的SID通常不是Microsoft Windows系統的問題。 ' –

+0

基本上沒有合法的windows安裝可以共享相同的密鑰:) THanks +1。這應該很好地工作! – FrostyFire