Как получить имя компьютера на Mac? Я говорю об имени, которое вы можете найти в System Profiler в разделе "Программное обеспечение".
Получить имя компьютера Mac
Ответ 1
Цель C
Имя, которое я искал, это:
[[NSHost currentHost] localizedName];
Он возвращает "Jonathan MacBook", а не "Jonathans-Macbook", или "jonathans-macbook.local", который возвращает только name
.
Swift 3
Для использования Swift >= 3.
if let deviceName = Host.current().localizedName {
print(deviceName)
}
Ответ 2
NSHost - вот что вы хотите здесь:
NSHost *host;
host = [NSHost currentHost];
[host name];
Ответ 3
Я использую 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];
}
Ответ 4
Используя 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];
Ответ 5
Здесь тот, который не блокирует:
NSString* name = [(NSString*)CSCopyMachineName() autorelease];