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

Posted

技术标签:

【中文标题】如何使用 C# 或免费 XP 工具卸载或删除 Windows XP Sp3 游戏?【英文标题】:How can I uninstall or delete Windows XP Sp3 Games using C# or free XP tools? 【发布时间】:2011-10-02 23:48:23 【问题描述】:

我实际上可以删除这些文件,但系统几乎会立即恢复它们。我在使用 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

大家有什么建议吗???

【问题讨论】:

您是否有理由不能只使用 Windows 添加/删除程序来摆脱游戏? @Jeff:这是一个系统管理员问题。他希望使用登录脚本自动从商业机器上删除游戏,而不必为每台机器手动删除而烦恼。 那么可能属于serverfault.com? @Mrchief:嗯,要回答这个问题,需要编程专业知识。 OP 的代码已经可以工作,只是不能从登录脚本中工作。这是有道理的,因为您不希望登录脚本中的流氓程序与 Windows 认为其系统结构的一部分混为一谈。或者,在登录脚本执行后加载代码所需的内容。 对。也许 C# 不是答案。看看一些基于 powershell 的脚本怎么样?您可以运行您的 .net 代码并访问将添加/删除程序的低级 Win API:***.com/questions/113542/… 【参考方案1】:

您可以尝试使用 PowerShell 脚本删除程序(不确定是否可以删除 XP 游戏,因为它们是 Windows 组件的一部分,但值得一试):How can I uninstall an application using PowerShell?

另外,发现了这个关于删除游戏的工具:http://www.systemtools.com/board/Forum8/html/000065.html

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

【讨论】:

您提供的链接引导我找到答案。我不知道为什么我不考虑编写一个 C# 应用程序来运行 sysocmgr.exe 并在 x 分钟后终止它......链接中的 vbscript 不会终止 sysocmgr.exe,但它仍然让我找到了答案【参考方案2】:

这就是我让它工作的方式(这是作为“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);
        
    

【讨论】:

以上是关于如何使用 C# 或免费 XP 工具卸载或删除 Windows XP Sp3 游戏?的主要内容,如果未能解决你的问题,请参考以下文章

如何卸载ubuntu14.04 上的git

ubuntu14.04怎么卸载idea

硕正卸载

virtualbox可以删除吗

如何卸载ubuntu

如何卸载虚拟机中VMware tools