vivion32 发表于 2015-5-2 10:41:10

在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;
var dest = destFolders;
var files = new List();
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)));
}
}
}
}
}
View Code   编译后,放在Windows 8系统下任意可读写位置即可运行,运行完毕会在exe所在的文件夹下生成一个“扫雷必备文件夹”,然后将里面的System32和SysWOW64内容复制到Windows Server 2012中对应位置即可。
  另外,经过探索,我发现如果只要玩扫雷,只需要拷SysWOW64下的内容即可。SysWOW64是32位的,可能是微软为顾及兼容性,未为64位提供专门的扫雷。
  最后,没有做不到,只有想不到!上三张图:
9x9扫雷纪录,4s:

  16x16扫雷纪录,36秒:

  30x16扫雷纪录,133秒:
页: [1]
查看完整版本: 在Windows Server 2012下玩扫雷