在Windows Server 2012下玩扫雷
由于受到了DreamSpark学生认证,我用的是Windows Server 2012的正版系统,但有一个问题就是,这个系统不能玩扫雷。
经过探索,在MSDN论坛上找到解决办法,原文如下:
http://social.technet.microsoft.com/Forums/zh-CN/winserver8gen/thread/b64cdc31-7e2d-40b8-a45d-45a8203c5fde
方法是,在Windows 8下找到System32和SysWOW64下的所有xaudio*.dll和xinput*.dll,然后复制到Windows Server 2012对应的文件夹下,过程很简单,只是可能需要劳烦一下室友。为图个简便,我就顺手将这段代码用C#实现了:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace CSConsole { class Program { static string[] sourceFolders = { Environment.GetFolderPath(Environment.SpecialFolder.System), Environment.GetFolderPath(Environment.SpecialFolder.SystemX86) }; static string baseFolder = "扫雷必须文件"; static string[] destFolders = { Path.Combine(baseFolder, "System32"), Path.Combine(baseFolder, "SysWOW64"), }; static void Main(string[] args) { if (!Directory.Exists(baseFolder)) Directory.CreateDirectory(baseFolder); for (int folderIndex = 0; folderIndex < sourceFolders.Length; ++folderIndex) { var source = sourceFolders[folderIndex]; var dest = destFolders[folderIndex]; var files = new List<string>(); files.AddRange(Directory.GetFiles(source, "xaudio*.dll")); files.AddRange(Directory.GetFiles(source, "xinput*.dll")); if (!Directory.Exists(dest)) Directory.CreateDirectory(dest); foreach (var file in files) { File.Copy(file, Path.Combine(dest, Path.GetFileName(file))); } } } } }
编译后,放在Windows 8系统下任意可读写位置即可运行,运行完毕会在exe所在的文件夹下生成一个“扫雷必备文件夹”,然后将里面的System32和SysWOW64内容复制到Windows Server 2012中对应位置即可。
另外,经过探索,我发现如果只要玩扫雷,只需要拷SysWOW64下的内容即可。SysWOW64是32位的,可能是微软为顾及兼容性,未为64位提供专门的扫雷。
最后,没有做不到,只有想不到!上三张图:
9x9扫雷纪录,4s:
16x16扫雷纪录,36秒:
30x16扫雷纪录,133秒: