2009-07-28 74 views
4

有沒有辦法以編程方式更改工作組的一臺機器(XP,Vista和Win 7的)屬於(最好從.NET語言)?我發現了一些代碼來幫助確定一臺機器屬於哪個工作組,但在某些情況下,我可能需要更改它。如何以編程方式更改機器的工作組?

這聽起來有點不可思議,但我想建立一個自動恢復安裝爲我們的用戶(在100多個不同的網站2到10臺機器,每個都有自己的「服務器」)。一種常見的情況是,「嘿,我的服務器死了,你能讓我們的銷售點軟件在另一臺機器上運行,並將它作爲我們的臨時/新服務器嗎?」。我最終不得不手動配置他們的計算機名(其重命名爲舊服務器的名字 - 我的代碼這個的話),然後仔細檢查工作組,以確保它在網絡上的其他計算機上可見。我很樂意儘可能地自動化。

(編輯)

隨着信息發佈我做更多的搜索和發現,其實我可以直接做到這一點,而無需運行EXE(不這樣做,這是一個大問題)。

using System; 
using System.Management; 

//類的東西爲簡潔,刪除

ManagementObject manage = new ManagementObject(string.Format("Win32_ComputerSystem.Name='{0}'", Environment.MachineName)); 
object[] args = { "WorkgroupName", null, null, null }; 
manage.InvokeMethod("JoinDomainOrWorkgroup", args); 
+0

感謝您發佈您的解決方案,你救了我的一天,先生。 – scor4er 2014-06-19 20:12:01

回答

2

看起來你不得不做出的SetComputerNameEx()API調用。可以在MSDNpinvoke.net上找到完成它的C#代碼示例。

爲SetComputerNameEx功能documenation可以發現here

你也可以使用Windows支持工具netdom.exe效用。你可以從你的代碼中調用這個EXE,並將它傳遞給適當的參數 - 在這種情況下,看起來你想要使用/ JOINWORKGROUP參數。

相關問題