星期一, 9月 27, 2010

無法用WMI遠端連線到未加入網域XP電腦

Wmi 遠端連線到電腦時,有時候會常常access deny出現!
當然有可能是你帳號打錯(自作孽ㄟ( ̄□ ̄ )ㄏ)

我測試了WIN2003、2008、XP、Win7 。XP的電腦卻大部分都無法連線成功!

大部分出現的訊息都是︰
2010年9月27日 PM 12:36:36 - 連線到192.168.1.112發生錯誤,錯誤訊息:存取被拒。 (發生例外狀況於 HRESULT: 0x80070005 (E_ACCESSDENIED))
2010年9月27日 PM 12:37:33 - 連線到192.168.1.112發生錯誤,錯誤訊息:存取被拒。 (發生例外狀況於 HRESULT: 0x80070005 (E_ACCESSDENIED))
雖然之前就在MSDN裡面有大概喵了一下WMI的架構,及遠端連線的Security,參考自︰
Dcom的權限設定,WMI的權限設定
結果還是不OK,碰到XP就是掛掉,試了快兩天還是Deny狂出現
一直以為是程式碼的問題,將以下的Com設定也按照msdn security的方法去試,結果還是失敗

//取得或設定 COM 模擬等級
remoteCon.Impersonation = ImpersonationLevel.Impersonate;
//如果為NULL,則已電腦的網域為預設值
remoteCon.Authority = "ntdlmdomain:domain"; 
//取得或設定 COM 驗證等級,以使用於這個連接中的作業。
remoteCon.Authentication = AuthenticationLevel.PacketPrivacy;
//指出是否需要為連接作業啟用使用者權限。在執行的作業需要啟用某些使用者權限時 (例如,電腦重新開機) 才應該使用這個屬性。 
 remoteCon.EnablePrivileges = true;

後來在Here看到了一段說明
0x80070005 (DCOM ACCESS_DENIED)
This error occurs when the connected user is not recognized or is restricted in some fashion by the remote server (for example, the user might be locked out). This happens most often when accounts are in different domains. Recent changes to WMI security can also cause this error to occur:
  • Blank passwords, formerly permitted, are not allowed in Windows XP and Windows Server 2003.
  • WMI does not allow asynchronous callbacks to a Windows 98 client. A call like SWbemServices.ExecNotificationQueryAsync from a Windows 98 computer to a Windows XP computer will result in an Access Denied error returned to the Windows 98 machine.
  • The DCOM configuration access setting might have been changed.
  • If the target computer is running Windows XP, the Forceguest value under the registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa might be set to force the Guest account off (value is zero).
嘗試將那幾台XP一直試不能成功連結的regedit檔作修改,終於測試就可以遠端連線了。
Forceguest影響了remote connection的權限導致失敗產生。

Forceguest的作用是啥?於是我只好再拜讀google神一下Forceguest的作用
後來因為有一台曾經加入過網域的XP卻也可以連線,但是未加入網域的卻不行,
又想知道之間的差別到底在哪裡,以下...

如果在未加入網域的 Microsoft Windows XP 系統上啟用了簡易檔案共用,則透過網路存取此系統的所有使用者都被迫使用來賓帳戶。 這是「網路存取: 本機帳戶的共用及安全性模型」的安全性原則設定,也稱為 ForceGuest。

設定:在本機管理原則下→Windows設定→安全性原則→網路存取:本機帳戶的共用和安全性模型

以下節錄解說:

此安全設定會決定,使用本機帳戶的網路登入要以何種方式加以驗證。若設定為「傳統」,則使用本機帳戶憑證的網路登入會使用該憑證進行驗證。若設定為「僅 Guest」,則使用本機帳戶的網路登入會自動對映至 Guest 帳戶。

「傳統」模型允許對資源的存取進行精密控制。若您使用「傳統」模式,就能針對相同的資源,將不同類型的存取權賦予不同的使用者。若您使用「僅 Guest」,就能對所有使用者一視同仁。所有使用者都驗證為 Guest,且對特定資源都具有相同等級的存取權,如「唯讀」或「修改」。

共有兩種模型可供使用:
傳統:本機使用者以自身身分驗證。
僅 Guest:本機使用者驗證為 Guest。

預設值:
Windows XP Professional 上為「僅 Guest」。
加入網域的 Windows Server 2003 系列和 Windows XP Professional 電腦為「傳統」。

重要:
在「僅 Guest」模型中,任何能透過網路存取您電腦的任何使用者 (包括匿名的網際網路使用者),都能存取您共用的資源。您必須使用「網際網路連線防火牆 (ICF)」或其他類似裝置,來保護電腦避免受到未經授權的存取。同樣的,在「傳統」模型下,本機帳戶也必須受到密碼保護,否則其使用者帳戶可能被他人用來存取共用的系統資源。

此設定只會影響未加入網域且執行 Windows XP Professional 的電腦。

沒有留言: