Windows Server 2016 Core安装SQL Server Express并开放1433端口

前面一篇文章提到了Windows Server 2016 Core的配置,今天要介绍的是如何正确安装SQL Server Express并且开放1433端口远程访问。由于本文的配置环境是Server Core系列,那么很遗憾所有图形操作将会变得困难,所以网上大部分配置文章不再适用,这里还是主要以介绍命令行配置为主。

至于为什么选择SQL Server Express,首先足够轻量,占用资源小而且足够应付绝大多数场景,也免去正式版的花销,这几年部署的SQL Server Express 2005和2008版本一直稳定运行,所以对于一些信息系统或者Web网站,轻量级Express版本的SQL Server才是佳选,好下面进入正文。

首先需要下载SQL Server Express,本文下载的是SQL Server 2017 Express Edition,下载完成后通过远端或者复制在Server Core系统里执行,由于Server Core仍然支持图形显示,那么执行安装包后你将看到下面的安装界面,切记不要急着安装,我们先选择Download Media

继续阅读“Windows Server 2016 Core安装SQL Server Express并开放1433端口”

Windows Server 2016 Core服务器基本配置

在服务器界Windows操作系统一直被吐槽不够稳定、不够安全和占用资源,微软也是痛定思痛决定一改往日,遂推出了Server Core系列的服务器版本,顾名思义——Core表示核心,也就是说这个系列的服务器版本将仅保留必要的核心,去除一切不必要的组件。大家对于服务器版本的Linux可能会有印象,那种黑乎乎的命令行界面,没有图形系统,这次微软的Core系列也习得此精髓不再提供交互桌面系统,系统的启动和管理等都通过命令提示符操作,不过与Linux不同的是,Windows Server Core不是纯粹的字符式操作环境,而保留了基本的图形系统,毕竟从NT时代Windows图形子系统就成为内核的一部分了,贸然去除必然会带来不必要的麻烦,因为基本图形系统的存在,一些图形界面的程序实际上也是可以运行的,比如系统自带的记事本(notepad)、注册表编辑器(regedit)等等。

最近折腾了ProxmoxVM虚拟化环境,顺带也尝试了Windows Server 2016 Core版本,本文下面将简单介绍一下Server Core的配置,首先对于Windows Server 2016 Core的安装我就不多介绍了,这部分和大多数Windows安装类似,其中我们使用的镜像来自微软官方的评估版本

继续阅读“Windows Server 2016 Core服务器基本配置”

VBScript 检测网络连接是否正常

某次维护测试需要配置脚本检测网络是否连通,正常手动检测网络是否连通有两个最为常见的办法:一是ping一个主机;二是打开某知名网站。所以脚本检测也顺着这两个思路进行。

关于ping的VBScript实现有如下代码可供参考:

Function Ping(strTarget)
  Dim objShell, objExec, strPingResults
  Set objShell = CreateObject("WScript.Shell")
  Set objExec = objShell.Exec("ping -n 2 -w 1000 " & strTarget)
  strPingResults = LCase(objExec.StdOut.ReadAll)
  If InStr(strPingResults, "reply from") Then 
    'WScript.Echo VbCrLf & strTarget & " responded to ping."
    Ping = True
  Else
    'WScript.Echo VbCrLf & strTarget & " did not respond to ping."
    Ping = False
  End If
  Set objExec = Nothing
  Set objShell = Nothing
End Function

继续阅读“VBScript 检测网络连接是否正常”

解决Windows 资源保护找到了损坏文件但无法修复问题

今天Windows 8.1系统的电脑突然卡住并且自动重启,通过事件查看器得到的资料有限,初步怀疑是系统文件受损导致,于是通过经典的sfc /scannow验证系统并修复受损文件,但是得到以下提示:

开始系统扫描。此过程将需要一些时间。

开始系统扫描的验证阶段。
验证 100% 已完成。

Windows 资源保护找到了损坏文件但无法修复
其中某些文件。CBS.Log windir\Logs\CBS\CBS.log 中有详细信息。
例如 C:\Windows\Logs\CBS\CBS.log。请注意,在脱机服务方案中,
当前不支持日志记录。

继续阅读“解决Windows 资源保护找到了损坏文件但无法修复问题”

100.64.0.1运营商级(Carrier-grade)NAT保留IP地址

在一次跟踪路由的网络操作时发现自己路由器下一跳路由节点的IP地址比较奇怪,是100.64.0.1。好奇促使我查询了这个IP地址的归属,结果是保留地址,到这里觉得比较奇怪了,按照常理以IPv4为例保留的IP地址一般为以下几种,常用于内网通讯或者特殊用途:

地址块起始结束备注
10.0.0.0/810.0.0.010.255.255.255局域网分配
172.16.0.0/12172.16.0.0172.31.255.255局域网分配
192.0.0.0/24192.168.0.0192.168.255.255局域网分配
169.254.0.0/16169.254.0.0169.254.255.255两台主机对等连接,当Windows获取不到IP地址的时候会自动分配此类地址
127.0.0.0/8127.0.0.0127.255.255.255回环(loopback)地址,表示本机
255.255.255.255/32255.255.255.255255.255.255.255广播地址

继续阅读“100.64.0.1运营商级(Carrier-grade)NAT保留IP地址”

Office Word 2003 使用邮件合并功能实现连续编号备忘

这里做个备忘,主要是工作上偶尔会遇到的一个简单操作,常见的场景是会议资料封面需要编号,或者某某证书有唯一的序列号标识。其实很长一段时间是用打码机手动一张一张打码进行编号,这个工作特别累人,尤其是在文件比较多、任务比较紧的情况下,如何自动让Word根据模板来生成已经编好号的页面成为考虑的首要内容。

对于程序员来说,第一种想法就是编程,通过VBA技术进行脚本编程,替换设定好的模板指定占位符进行批量生成确实可以很好的解决问题,唯一麻烦的地方是如果以后文件有改动,程序需要重新配置,而且授人以鱼不如授之以渔,对于不会编程的同事来说,我还需要教会他们完成这项工作,所以今天文章主要介绍的就是如何不通过编程来实现连续编号。

假设给我们的是一个留下需要输入编号的空白模板文档,在此基础上我们需要新建Excel,文件名自定义。

继续阅读“Office Word 2003 使用邮件合并功能实现连续编号备忘”

彻底防止Windows 7/8/8.1升级更新到Windows 10

去年7月写过一篇文章讲解如何去除扰人的获取Windows 10的图标,那时候微软也只是推送了获取Windows 10的提示,具体安装Windows 10与否还是有显著的选项让用户自己选择的。

虽然通过先前的方法确实抑制了升级Windows 10的提示,怎奈微软接下来连续放大招推送升级补丁,并且不怎么明显的“诱使”用户升级系统,比如我遇到的微软健康助手提示升级,并且默认勾选同意的坑。其实我不是说Windows 10不好,就是较为反感微软的推送方式,就好像你去商场老是有业务员跟着你,不停向你推荐某某产品好等等,而且因为大部分客户电脑上一些业务系统在Windows 10下存在各种兼容问题,就有客户反应因为不小心升级Windows 10导致业务软件不能正常运行最后只有重新安装老系统(其实对于误安装有办法直接恢复到老系统,方法附本文后)

继续阅读“彻底防止Windows 7/8/8.1升级更新到Windows 10”

以Web代理劫持会话绕过并破解网页版软件USB-Key加密狗方案

单位某信息管理系统,需要加密狗才能运行,因为加密狗只有一个,该系统又需要维护各部门台账信息,遂思考在不增加加密狗的情况下能否将该系统分发下去,已知该系统采用Java Web方式编写,虽然有桌面应用的样子,但实质上是Web应用,很容易找到了Java Web服务器和实际的访问URL,在防火墙端口开放访问,并在路由器上做好端口映射,其他电脑访问正常,本来以为万事大吉,哪知道在登录的时候客户端提示没有加密狗无法登录。

审阅了登录页面的源代码,发现其采用ActiveX控件方式读取加密狗并设置登录信息以便于提交服务器,客户端没有加密狗,这个验证肯定也无法通过,原来我一直以为这个软件的加密狗是用于服务器端的,没想到客户端网页也采用了加密狗保护机制。

通常意义上加密狗是一种软件保护机制,主要防止软件被盗版,其通过硬件的方式保护核心的算法(比如关键公式),在软件需要的时候由硬件进行数据处理以完成整个软件流程,那么可以知道其登录信息的加密方式是存储在加密狗里面的,如果要登录成功又必须需要加密后的登录凭证。

因为该软件项目规模较大,反编译修改软件较为复杂,而且领导明确要求不可以改动原软件,所以只有另行他法。

继续阅读“以Web代理劫持会话绕过并破解网页版软件USB-Key加密狗方案”

彻底关闭并卸载任务栏右下角获取Windows 10图标提示

微软为推销Windows 10可谓是不遗余力,居然强制向广大的Windows 7和Windows 8/8.1用户进行了推送,其结果是小伙伴们发现电脑的右下角出现一个“获取 Windows 10”(英文版:Get Windows 10)的图标,但对于我这样的没有升级欲望的,看到这样的图标颇为不爽,打开任务管理器,居然还有一个GWX.exe的进程,罢了,罢了,反正我也知道可以升级Windows 10,但占用我可怜的内存资源则不能忍受了,所以决定卸载并移除该提示。

Get Windows 10 icon

首先查阅了网上的资料,发现大家都从更新入手,已知更新代号为KB3035583,那么直接卸载,问题不是解决了吗?非也非也,该更新被标注为高优先级,也就是说只能解燃眉之急,不能做长久打算,过一段时间“获取 Windows 10”(为了简便,下文称为“GWX”)还是会死而复活。

继续阅读“彻底关闭并卸载任务栏右下角获取Windows 10图标提示”

BAT批处理判断IP地址并自动ipconfig release/renew

某内网拨号软件设计问题,拨号后在偶然的情况下不能自动获取DHCP从而更新内网IP,后来发现通过手动释放和重新获取IP可以解决这个问题,但是每次在操作前还要看下IP地址是不是已经被更新为内网地址,若已经更新则无需操作,否则就要手动释放更新,每次敲一堆命令确实麻烦,于是打算做成批处理。

首先遇到的问题是如何获取IP地址,当然既然采用批处理那么就需要借助于现有的命令或者命令行程序,Windows系统内ipconfig命令可以获取IP地址等信息,如果我们只需要IP地址,那么就必须对获取的信息进行筛选过滤,这就需要findstr等工具的配合了,结合网上找到的示例最终代码如下:

for /f "tokens=2 delims=:" %%i in ('ipconfig^|findstr "Address"') do set ip=%%i
SET ip=%ip:~1%

继续阅读“BAT批处理判断IP地址并自动ipconfig release/renew”