如何使用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
有人有什么建议吗?
您可以尝试使用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);
}
}
}