使用C#在“System32 \ sysprep”中创建文件

时间:2017-04-18 13:23:19

标签: c#

我目前正在开发一个程序,用于在Windows 7和Windows 10计算机上准备和运行sysprep(基于特定变量)。

我为每个操作系统创建了标准化的XML文件,但是在创建过程中遇到问题,程序决定将文件放在SysWOW64中。

我已经将程序改为基于x86,试图避免这种方法无效。我还尝试使用“XCopy”为CMD嵌入脚本,以专门移动仍无法正常工作的文件。下面是我试图使工作没有成功的代码的相关部分。

try
    {
        using (StreamWriter Unattend = new StreamWriter("C:\\Windows\\System32\\sysprep\\unattend.xml"))
    {
        Unattend.WriteLine("<settings pass=\"generalize\">");
        Unattend.Write("</unattend>");
    }
    }
catch
    {
        MessageBox.Show("Failed Create XML File");
    }

1 个答案:

答案 0 :(得分:0)

可以通过对内核的p / Invoke调用来禁用文件系统重定向。

取自http://www.tonycamilli.com/blog/2005/07/disabling-wow64-file-system

class Wow64Mgr
{
    [STAThread]
    static void Main(string[] args)
    { 
        try
        {
        if(Wow64Interop.EnableWow64FSRedirection(false))
            Console.WriteLine("WOW64 File System Redirection Disabled");
        else
            Console.WriteLine("Failure Disabling WOW64 File System Redirection");
        }
        catch (Exception exc)
        {
            Console.WriteLine("Failure Setting WOW64 File System Redirection.");
            Console.WriteLine(exc.Message);
        }
    }
}

public class Wow64Interop
{
    [DllImport("Kernel32.Dll", EntryPoint="Wow64EnableWow64FsRedirection")]
    public static extern bool EnableWow64FSRedirection(bool enable);
}

这可能有各种疯狂的副作用,所以不要让它被禁用。您应该在写入文件之前立即将其关闭,并在完成后立即将其重新打开。