如何使用c#或免费的XP工具卸载或删除Windows XP Sp3游戏?

本文关键字:XP Windows 删除 Sp3 游戏 卸载 工具 何使用 免费 | 更新日期: 2023-09-27 18:01:41

我实际上可以删除文件,但系统几乎立即恢复它们。我一直没有成功地使用sysocmgr.exe从系统中删除游戏,并希望通过代码做到这一点(我可以得到sysocmgr.exe运行和删除游戏,如果我手动运行它,但它不适合我在登录脚本-它得到执行,只是坐在那里。如果我关机,文件不会被删除,但如果我打开任务管理器并结束任务,文件会被删除)…

我的卸载批处理文件如下:

copy sysoc.txt "%windir%'temp'sysoc.txt" /y
sysocmgr /i:"%windir%'inf'sysoc.inf" /u:"%windir%'temp'sysoc.txt" /q /r

sysoc.txt如下所示:

[Components]
pinball = off
Solitaire = off
freecell = off
hearts = off
minesweeper = off
spider = off
zonegames = off
有人有什么建议吗?

如何使用c#或免费的XP工具卸载或删除Windows XP Sp3游戏?

您可以尝试使用PowerShell脚本删除程序(不确定是否可以删除XP游戏,因为它们是Windows组件的一部分,但值得一试):我如何使用PowerShell卸载应用程序?

还发现了这个谈论删除游戏的工具:http://www.systemtools.com/board/Forum8/HTML/000065.html

另外,请注意登录脚本在登录用户的安全上下文中运行,因此如果它们不是Admins,则几乎肯定会失败。启动脚本可能会更成功。

我是这样让它工作的(这被执行为"SYSTEM"):

using System;
using System.Collections.Generic;
using System.IO;
using System.Diagnostics;
namespace XPGameRemoval
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            string WinDir = Environment.GetEnvironmentVariable("WinDir");
            FileStream cStream = new FileStream(
                WinDir + "''Temp''SysOC.txt", 
                FileMode.Create, 
                FileAccess.ReadWrite, 
                FileShare.ReadWrite);
            StreamWriter cWriter = new StreamWriter(cStream);
            cWriter.WriteLine("[Components]");
            cWriter.WriteLine("pinball = off");
            cWriter.WriteLine("Solitaire = off");
            cWriter.WriteLine("freecell = off");
            cWriter.WriteLine("hearts = off");
            cWriter.WriteLine("minesweeper = off");
            cWriter.WriteLine("spider = off");
            cWriter.WriteLine("zonegames = off");
            cWriter.Close();
            cStream.Close();
            Process P = Process.Start(WinDir+"''System32''SysOCMgr.exe","/i:'""+WinDir+"''Inf''SysOC.Inf'" /u:'""+WinDir+"''Temp''SysOC.txt'" /q /r");
            int Timeout = 15;
            System.Threading.Thread.Sleep(5000);
            while (File.Exists(WinDir+"''System32''SOL.EXE") && Timeout>0 && !P.HasExited)
            {
                System.Threading.Thread.Sleep(59000);  // wait a little under 15 minutes
                Timeout--;
            }
            if (!P.HasExited)
                P.Kill();
            if (P.ExitCode != 0) // SysOCMgr errored out, return error
                Environment.Exit(P.ExitCode);
            if (File.Exists(WinDir + "''System32''SOL.EXE")) // something went wrong, return generic error...
                Environment.Exit(80);
        }
    }
}