通过C语言接口在Mac App内部对系统的DNS配置进行改动。

Mac OS X设置DNS代码

演示样例代码setDNS.c内容例如以下:

#include <SystemConfiguration/SystemConfiguration.h>

static bool setDNS(CFStringRef *resolvers, CFIndex resolvers_count)
{
SCDynamicStoreRef ds = SCDynamicStoreCreate(NULL, CFSTR("setDNS"), NULL, NULL); CFArrayRef array = CFArrayCreate(NULL, (const void **) resolvers,
resolvers_count, &kCFTypeArrayCallBacks); CFDictionaryRef dict = CFDictionaryCreate(NULL,
(const void **) (CFStringRef []) { CFSTR("ServerAddresses") },
(const void **) &array, 1, &kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks); CFArrayRef list = SCDynamicStoreCopyKeyList(ds,
CFSTR("State:/Network/(Service/.+|Global)/DNS")); CFIndex i = 0, j = CFArrayGetCount(list);
if (j <= 0) {
return FALSE;
}
bool ret = TRUE;
while (i < j) {
ret &= SCDynamicStoreSetValue(ds, CFArrayGetValueAtIndex(list, i), dict);
i++;
}
return ret;
} int main(int argc, const char * argv[])
{
CFStringRef resolvers[] = {
CFSTR("8.8.8.8"),
CFSTR("114.114.114.114")
};
setDNS(resolvers, (CFIndex) (sizeof resolvers / sizeof resolvers[0])); return 0;
}

相应的Makefile文件内容:

#!/usr/bin/make -f
default: setDNS.c
cc -o setDNS setDNS.c -framework Foundation -framework SystemConfiguration
clean:
rm setDNS

谢谢各位。欢迎交流并指正。

---- 大茶园丁@戴维营教育

http://io.diveinedu.com

http://www.diveinedu.com

https://github.com/DiveinEdu-CN

版权声明:本文博主原创文章,博客,未经同意不得转载。

Macosx Setdns的更多相关文章

  1. Mac-OSX的Python3.5虚拟环境下安装Opencv

    Mac-OSX的Python3.5虚拟环境下安装Opencv 1   关键词 关键词:Mac,OSX,Python3.5,Virtualenv,Opencv 2   概述 本文是一篇 环境搭建 的基础 ...

  2. macosx 10.11 python pip install 出现错误OSError: [Errno 1] Operation not permitted:

    Exception: Traceback (most recent call last): File , in main status = self.run(options, args) File , ...

  3. XCode6.3上使用opencv教程(MacOSX 10.10)

    OpenCV 是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和Mac OS操作系统上.它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Pyth ...

  4. macOSX 访问 win7共享文件

    macOSX 访问 win7共享文件 macOSX 访问 win7共享文件 2014年1月8日星期三 开年的第一篇写下自己使用macos中遇到的问题.为后来初学者提供一些浅薄经验. 第一步:WINDO ...

  5. [MAC ] Mac-OSX下安装Git

    转载自 : http://www.cnblogs.com/shanyou/archive/2011/01/30/1948088.html Mac-OSX下安装Git是一件很简单的事,我们可以下载一个安 ...

  6. [MacOSX]

    When i run svn up in the folder, i got these error: svn: Error converting entry in directory 'XXXXX' ...

  7. MacOSX和Windows 8的完美融合

    MacOSX和Windows8的完美融合 一般情况下我们要在MACOS系统下运行Windows软件怎么办呢?一种方法我们可以装CrossOver这款软件,然后在configuration->in ...

  8. MacOSX快捷键

    [MacOSX快捷键] 关闭显示器:Shift + Ctrl + 退出键 休眠:Command + Option + 退出键 关机:Ctrl + Option + Command + 退出键 打开文件 ...

  9. 在MacOSX下使用Github管理Xcode代码

    版本控制应该算是每个程序员所必备的技能,这个重要性,我就不多说了哈.现在版本控制基本上就是两种途径:SVN和Git.对于SVN我并不是非常了解,只知道在Windows下非常实用,但是在MacOSX下, ...

随机推荐

  1. JSP的学习(2)——语法知识一

    上一篇<JSP的学习>讲述了JSP的一些基础知识和底层原理,本篇将来学习JSP所需掌握的语法知识等. JSP的语法主要包括以下几个部分的内容: 1)         JSP模板元素 2)  ...

  2. boost:asio编译

    参考:http://hi.baidu.com/need_for_dream/blog/item/c14a28086a504c33e92488b5.html 环境: VS2010, boost1.38. ...

  3. Mfc资源消息的响应机制

    Mfc消息的响应机制 Mfc中有很多资源,如图标资源,菜单资源,工具栏资源等等:那么,资源是如何进行消息响应和消息映射的呢? 它们的流程是: 某种资源——对应的ID号——消息映射——响应函数的声明与实 ...

  4. 用 managedQuery() 时须要注意的一个陷阱

    Activity 里面提供了一个 managedQuery() 方法,依照 Android SDK 里面的说明,"the activity will manage its lifecycle ...

  5. html ui设计案例

    1.jquery特效:http://www.5icool.org 2. http://www.open-lib.com/Lib/1992.jsp

  6. 人事管理系统 c语言版

    int menu(){ printf("请按提示输入完毕操作!\n");   printf("1.查询员工信息\n");   printf("2.统计 ...

  7. 显示形状回归算法(ESR)代码介绍

    源地址:http://www.thinkface.cn/thread-3704-1-6.html 人脸对齐包括两个部分,分别为训练部分和测试部分.所有的代码基于opencv2.0.(一)训练阶段Ste ...

  8. OCA读书笔记(12) - 数据库维护

    查询优化器统计信息 搜集统计信息: 不是实时的: SQL> conn /as sysdbaConnected.SQL> grant select on dba_objects to sco ...

  9. GitHub 优秀Android 开源项目

    阅读目录 1.Xabber客户端 2.oschina客户端 3.手机安全管家 4.星座连萌 5.玲闹铃 6.魔乐盒 7.PWP日历 8.Apollo音乐播放器 9.夏普名片识别 10.高仿人人网 11 ...

  10. Ubuntu Manpage: ajaxterm - Web based terminal written in python

    Ubuntu Manpage: ajaxterm - Web based terminal written in python hardy (1) ajaxterm.1.gz Provided by: ...