Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#或免费XP工具卸载或删除Windows XP Sp3游戏?_C#_Uninstallation - Fatal编程技术网

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

如何使用C#或免费XP工具卸载或删除Windows XP Sp3游戏?,c#,uninstallation,C#,Uninstallation,我实际上可以删除这些文件,但系统几乎可以立即恢复它们。我使用sysocmgr.exe从系统中删除游戏时失败,希望通过代码执行此操作(如果我手动运行sysocmgr.exe,我可以让它运行并删除游戏,但它在登录脚本中对我不起作用-它会被执行,只是停留在那里。如果我关闭,文件不会被删除,但如果我打开任务管理器并结束任务,文件会被删除) 我的卸载批处理文件如下所示: copy sysoc.txt "%windir%\temp\sysoc.txt" /y sysocmgr /i:"%windir%\in

我实际上可以删除这些文件,但系统几乎可以立即恢复它们。我使用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
[Components]
pinball = off
Solitaire = off
freecell = off
hearts = off
minesweeper = off
spider = off
zonegames = off
sysoc.txt看起来像:

copy sysoc.txt "%windir%\temp\sysoc.txt" /y
sysocmgr /i:"%windir%\inf\sysoc.inf" /u:"%windir%\temp\sysoc.txt" /q /r
[Components]
pinball = off
Solitaire = off
freecell = off
hearts = off
minesweeper = off
spider = off
zonegames = off

有人有什么建议吗?

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

此外,还发现了一个关于删除游戏的工具:


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

这就是我如何让它工作的(这是作为“系统”执行的):

使用系统;
使用System.Collections.Generic;
使用System.IO;
使用系统诊断;
命名空间删除
{
静态类程序
{
/// 
///应用程序的主要入口点。
/// 
[状态线程]
静态void Main()
{
字符串WinDir=Environment.GetEnvironmentVariable(“WinDir”);
FileStream cStream=新FileStream(
WinDir+“\\Temp\\SysOC.txt”,
FileMode.Create,
FileAccess.ReadWrite,
FileShare.ReadWrite);
StreamWriter cWriter=新的StreamWriter(cStream);
cWriter.WriteLine(“[Components]”);
cWriter.WriteLine(“弹球=关闭”);
cWriter.WriteLine(“纸牌=关闭”);
cWriter.WriteLine(“freecell=off”);
cWriter.WriteLine(“hearts=off”);
cWriter.WriteLine(“扫雷舰=关闭”);
cWriter.WriteLine(“spider=off”);
cWriter.WriteLine(“zonegames=off”);
cWriter.Close();
cStream.Close();
进程P=Process.Start(WinDir+“\\System32\\SysOCMgr.exe”,“/i:\”“+WinDir+”\\Inf\\SysOC.Inf\”/u:\”“+WinDir+“\\Temp\\SysOC.txt\”/q/r”);
int超时=15;
系统线程线程睡眠(5000);
while(File.Exists(WinDir+“\\System32\\SOL.EXE”)&&Timeout>0&&!P.HasExited)
{
System.Threading.Thread.Sleep(59000);//稍等15分钟
超时--;
}
如果(!P.HasExited)
P.Kill();
如果(P.ExitCode!=0)//SysOCMgr出错,则返回错误
环境。退出(P.ExitCode);
如果(File.Exists(WinDir+“\\System32\\SOL.EXE”)//出现问题,请返回一般错误。。。
环境。出口(80);
}
}
}

有什么原因不能只使用Windows添加/删除程序来删除游戏吗?@Jeff:这是一个系统管理问题。他想使用登录脚本自动删除商业机器上的游戏,而不必为每台机器手动删除而烦恼。那么可能属于serverfault.com吗?@Mrchief:好吧,回答这个问题还有,编程方面的专业知识是需要的。OP已经可以运行的代码,只是不能从登录脚本中运行。这是有道理的,因为你不希望登录脚本中的流氓程序干扰Windows认为是其系统结构的一部分。或者,在登录脚本执行后加载代码所需的某些内容。对。也许是C#这不是答案。看看一些基于powershell的脚本怎么样?你可以运行你的.net代码,也可以访问低级Win API来添加/删除程序:你提供的链接让我找到了答案。我不知道为什么我不想编写一个C应用程序来运行sysocmgr.exe,并在x分钟后终止它…l中的vbscriptink不会终止sysocmgr.exe,但它仍然会引导我找到答案