如何在Mac上獲取計算機的名稱?我正在談論與「軟件」下System Profiler中可找到的名稱相同的名稱。獲取我的Mac的計算機名稱
回答
目標C
我一直在尋找的名稱是:
[[NSHost currentHost] localizedName];
它返回 「喬納森的MacBook」,而不是「 Jonathans-Macbook「,或者只是name
返回的」jonathans-macbook.local「。
夫特3
的SWIFT> = 3使用。
if let deviceName = Host.current().localizedName {
print(deviceName)
}
NSHost是你想要的這裏:
NSHost *host;
host = [NSHost currentHost];
[host name];
這會得到用戶友好的名稱(所以包括像空格和撇號之類的東西),或空間替換爲 - 和'刪除的dumber版本。 – 2010-10-31 17:39:24
來自鏈接文檔:'可以是一個簡單的主機名,例如@「sales」,或者是一個完全合格的域名,例如@「sales.anycorp.com」。# – 2010-10-31 23:05:03
不,我的意思是說「喬納森的MacBook 「或」Jonathans-Macbook「? – 2010-11-01 23:46:52
這裏有一個不阻止:
NSString* name = [(NSString*)CSCopyMachineName() autorelease];
現在已棄用。 – Dev 2013-03-08 08:11:15
使用SystemConfiguration.framework,你必須添加到您的項目:
#include <SystemConfiguration/SystemConfiguration.h>
...
// Returns NULL/nil if no computer name set, or error occurred. OSX 10.1+
NSString *computerName = [(NSString *)SCDynamicStoreCopyComputerName(NULL, NULL) autorelease];
// Returns NULL/nil if no local hostname set, or error occurred. OSX 10.2+
NSString *localHostname = [(NSString *)SCDynamicStoreCopyLocalHostName(NULL) autorelease];
請注意Apple在註冊Bonjour服務時不建議使用此方法。更多信息請參見[技術問答QA1228](http://developer.apple.com/library/mac/#qa/qa1228/_index.html)。 – Dev 2013-03-08 08:14:52
只是爲了澄清 - 'ComputerName'和'LocalHostName'在這裏是不同的。 Apple建議不要使用LocalHostName,因爲它具有比Bonjour服務所需更嚴格的限制 - 並且Bonjour自動註冊API使用ComputerName以及免費的一些重複數據刪除魔術。 – RJHunter 2018-02-03 07:14:26
我用sysctlbyname(」 kern.hostname「),它不會阻止。 請注意,我的幫助器方法應該只用於檢索字符串屬性,而不是整數。
#include <sys/sysctl.h>
- (NSString*) systemInfoString:(const char*)attributeName
{
size_t size;
sysctlbyname(attributeName, NULL, &size, NULL, 0); // Get the size of the data.
char* attributeValue = malloc(size);
int err = sysctlbyname(attributeName, attributeValue, &size, NULL, 0);
if (err != 0) {
NSLog(@"sysctlbyname(%s) failed: %s", attributeName, strerror(errno));
free(attributeValue);
return nil;
}
NSString* vs = [NSString stringWithUTF8String:attributeValue];
free(attributeValue);
return vs;
}
- (NSString*) hostName
{
NSArray* components = [[self systemInfoString:"kern.hostname"] componentsSeparatedByString:@"."];
return [components][0];
}
AFAIK的最佳解決方案,不像'SCDynamicStoreCopyLocalHostName',它會返回必要的「.local」後綴。 – 2016-07-13 03:34:13
- 1. 如何獲取nodejs中的Mac OS計算機名稱
- 2. 獲取網絡計算機的名稱
- 3. 獲取計算機名稱在Adobe AIR
- 4. 獲取客戶端計算機名稱
- 5. 從AD獲取計算機名稱
- 6. WIX獲取計算機名稱?
- 7. Java:通過計算機名稱獲取計算機規格
- 8. 從我的網絡位置獲取計算機名稱
- 9. 獲取計算機的MAC地址
- 10. 獲取本地計算機的DNS名稱,如遠程計算機所示
- 11. 如何在VB.Net中獲取外部計算機的計算機名稱?
- 12. 獲取計算機名
- 13. 如何使用PHP獲取計算機名稱,計算機的本地IP和計算機的服務器IP
- 14. VB.Net - 獲取運行本地文件的計算機的名稱
- 15. 電源外殼測試連接,然後獲取計算機名稱或mac-addr
- 16. 獲取計算機的域名
- 17. 從虛擬機內部獲取Azure計算機實例名稱
- 18. 獲得網絡計算機名稱
- 19. 如何獲取在VB中訪問我的網頁的計算機的名稱?
- 20. 從活動目錄獲取計算機名稱和OU的
- 21. 獲取計算機名稱的一部分
- 22. 獲取客戶端的IP地址和計算機名稱?
- 23. 獲取從計算機名稱列表中登錄的用戶
- 24. MPICH2:獲取進程計算機名稱的API
- 25. 在MATLAB中獲取(一致的)計算機名稱
- 26. 獲取遠程計算機的IP地址和名稱在VB
- 27. 如何使用C++獲取計算機的專有名稱(DN)
- 28. 在C中獲取Lan的計算機名稱#
- 29. 從計算機網絡名稱獲取用戶名
- 30. 如何獲取計算機名稱(在Web應用程序中的主機名)?
請注意[NSHost currentHost]執行阻止網絡查找。在慢速網絡或斷開連接的計算機上,它會停止您的應用程序,直到網絡調用超時,除非您在後臺線程上調用它。 – starkos 2011-11-14 12:23:19
只需在註冊服務時傳遞一個空字符串,並按照Apple推薦的方式自動使用您的本地化名稱 – 2014-03-11 22:10:54
有沒有辦法在Swift中編寫此代碼? – dylan 2016-10-14 14:42:19