回答
樸素字符串處理方法:
string fullName = "MYMACHINE.mydomain.com";
string resolvedMachineName = fullName.Split('.')[0];
如果你想機器名的「基本」的理解,然後使用:
Environment.MachineName
它提供的機器名稱不帶域(傳統上在命令提示符下COMPUTERNAME
變量)。請參閱:http://msdn.microsoft.com/en-us/library/system.environment.machinename.aspx
編輯#1
@Antineutrino - 正如我重新閱讀我的答案,我意識到,我們沒有足夠的信息給你一個正確的答案。然而,當你說'機器名稱'時,你是否想知道如何解析你所擁有的字符串,或者找到你想要的東西的正確方法並不清楚。如果你只是想知道如何解析一個字符串,其他答案是正確的。另一方面...
您是否想要NetBios名稱或羣集名稱?然後
Environment.MachineName
您是否想要運行集羣的計算機的基礎名稱?你需要dig into the WMI classes。
是否想要解析爲當前計算機的所有DNS字符串中的最具體名稱?即來自web1.mysite.com的web1?您需要登錄resolve all the IP's bound to the machine。
如果你回去編輯/修改你的問題並提供更多的細節 - 你會得到更好/更具體的答案。
編輯#2
如果我理解正確的話,你的場景如下:您有在桌面環境中的客戶端和服務器的機器上運行類似的代碼。在所有機器註冊表中,您已爲服務器保存了一個DNS名稱(server.myapp.com)。現在在你想要確定一臺機器是否是服務器的代碼中。
你問對於
string serverName = Registry.GetValue(REG_KEY, REG_VALUE, "key missing");
string currentMachine = Environment.MachineName;
if (currentMachine.ToLower() == serverName.ToLower().Split('.')[0]) {
//do something fancy
};
另一個想法
反而萎縮的服務器名稱,你可以長的機器名。
string serverName = Registry.GetValue(REG_KEY, REG_VALUE, "key missing");
string currentMachine = Environment.MachineName +
Environment.GetEnvironmentVariable("USERDNSDOMAIN");
if (currentMachine.ToLower() == serverName.ToLower()) {
//do something fancy
};
你可能想
分發註冊表項什麼似乎有點麻煩。如果是我,我可能會做一個/一些/許多如下:
創建不同的構建配置和使用pre-processor directives更改代碼。非常粗略的東西:
#if(RELEASE_SERVER) { /*do server code*/} #if(RELEASE_CLIENT) { /*do server code*/}
使用app.config ---這就是它存在的配置數據。無需污染註冊表。 app.config can be transformed on build/deployment,或在一臺服務器上手動修改。
將大部分配置數據存儲在中央位置。這樣,應用程序只需要知道是從哪裏檢索它的配置(即使它本身)。
+1爲了試圖解決OP所需要的,而不是他認爲他想要的東西 – James 2012-08-01 13:57:09
我經常發現自己希望人們能夠/幫助我想要什麼,而不是我所要求的:-D – EBarr 2012-08-01 13:58:09
@EBar:我想具有由Environment.MachineName返回的值。 – Antineutrino 2012-08-01 14:00:15
- 1. 從MVC4中的mvc路由中刪除區域名稱和控制器名稱
- 2. 從域名服務器中刪除舊的域名作爲域名服務器
- 3. 從JSESSIONID中刪除服務器名稱
- 4. 刪除域名
- 5. 在CodeIgniter中從域名中刪除www
- 6. 在MVC中從路由中刪除區域名稱
- 7. 從URL中刪除的域名
- 8. 從網址中刪除子域名
- 9. 如何從URL中刪除子域名?
- 10. 從Form Post中刪除子域名
- 11. 如何從sublimeREPL(clojure)提示中刪除名稱空間名稱?
- 12. 在MVC中刪除控制器名稱
- 13. 從url中刪除目錄名稱Wordpress
- 14. 從文本文件中刪除名稱
- 15. VB.NET:從名稱中刪除.png
- 16. jQuery - 從類名稱中刪除逗號
- 17. Javascript - 從表中刪除項目名稱?
- 18. 從子類中刪除類名稱
- 19. 從data.frame名稱中刪除空格
- 20. 從列表中刪除特定名稱
- 21. 從WebService中刪除名稱空間
- 22. 從servicestack中刪除project.serviceclass名稱url
- 23. htaccess從url中刪除參數名稱
- 24. 從列名稱中刪除後綴
- 25. 從名稱中刪除前綴python
- 26. 從URL YII中刪除項目名稱?
- 27. 從自定義域Heroku刪除Django應用程序的名稱
- 28. Capistrano - 機器名稱
- 29. 如何從asp.net mvc中的url中刪除控制器名稱?
- 30. 在CodeIgniter中從URL中刪除控制器名稱
所以,我必須解析字符串才能找出? – Antineutrino 2012-08-01 13:38:21
@Authutrino我假設你已經有了一個全名,字符串是如何存儲的? – James 2012-08-01 13:39:12
值得注意的是,這種方法假設你總是有三部分路徑。如果域名與MYMACHINE.mydomain.co.uk相似,那麼它會破壞你的邏輯。 – Sam 2012-08-01 13:39:57