Files
DevToolsAvalonia/常用工具集/ViewModels/04破解及系统相关/猫猫回收站ViewModel.cs
2025-08-26 08:37:44 +08:00

106 lines
4.5 KiB
C#

using Avalonia.Platform;
using Base.Utility;
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using .Base;
namespace .ViewModel._04破解及系统相关
{
public class ViewModel : ViewModelBase
{
public DelegateCommand Button1Cmd { get; set; }
public DelegateCommand Button2Cmd { get; set; }
public ViewModel()
{
Button1Cmd = new DelegateCommand(Button1CmdFunc);
Button2Cmd = new DelegateCommand(Button2CmdFunc);
}
/// <summary>
/// 编程猫猫回收站
/// </summary>
/// <param name="obj"></param>
private void Button1CmdFunc(object obj)
{
RegistryKey user = Registry.CurrentUser;
RegistryKey CLSID = user.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CLSID\\");
RegistryKey icon = CLSID.OpenSubKey("{645FF040-5081-101B-9F08-00AA002F954E}", true);
RegistryKey defaultIcon = icon.CreateSubKey("DefaultIcon");
//把dll复制到c:/System目录下
byte[] fullDllBytes = null;
// 获取Pack URI
string packUri = "avares://常用工具集/Assets/Cat/full.dll";
// 使用Pack URI打开文件并读取内容
using (Stream stream = AssetLoader.Open(new Uri(packUri)))
{
fullDllBytes = new byte[stream.Length];
stream.Read(fullDllBytes, 0, fullDllBytes.Length);
}
byte[] emptyDllBytes = null;
// 获取Pack URI
string packUri2 = "avares://常用工具集/Assets/Cat/empty.dll";
// 使用Pack URI打开文件并读取内容
using (Stream stream = AssetLoader.Open(new Uri(packUri2)))
{
emptyDllBytes = new byte[stream.Length];
stream.Read(emptyDllBytes, 0, emptyDllBytes.Length);
}
string path = Environment.GetEnvironmentVariable("USERPROFILE");
string appData = path + "\\AppData";
DirectoryInfo directoryInfo = new DirectoryInfo(appData);
if (!directoryInfo.Exists)
directoryInfo.Create();
string myDir = appData + "\\catIco";
DirectoryInfo directoryInfo2 = new DirectoryInfo(myDir);
if (!directoryInfo2.Exists)
directoryInfo2.Create();
string fullDllPath = myDir + "\\full.dll";
string emptyDllPath = myDir + "\\empty.dll";
if (File.Exists(fullDllPath))
File.Delete(fullDllPath);
if (File.Exists(emptyDllPath))
File.Delete(emptyDllPath);
using (FileStream stream = new FileStream(fullDllPath, FileMode.Create))
stream.Write(fullDllBytes, 0, fullDllBytes.Length);
using (FileStream stream = new FileStream(emptyDllPath, FileMode.Create))
stream.Write(emptyDllBytes, 0, emptyDllBytes.Length);
defaultIcon.SetValue("", @"%USERPROFILE%\AppData\catIco\empty.dll,0", RegistryValueKind.ExpandString);
defaultIcon.SetValue("Full", @"%USERPROFILE%\AppData\catIco\full.dll,0", RegistryValueKind.ExpandString);
defaultIcon.SetValue("Empty", @"%USERPROFILE%\AppData\catIco\empty.dll,0", RegistryValueKind.ExpandString);
//重新打开桌面
DesktopRefurbish.DeskRef();
}
/// <summary>
/// 还原
/// </summary>
/// <param name="obj"></param>
private void Button2CmdFunc(object obj)
{
RegistryKey user = Registry.CurrentUser;
RegistryKey CLSID = user.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CLSID\\");
RegistryKey icon = CLSID.OpenSubKey("{645FF040-5081-101B-9F08-00AA002F954E}", true);
RegistryKey defaultIcon = icon.CreateSubKey("DefaultIcon");
defaultIcon.SetValue("", @"%SystemRoot%\System32\imageres.dll,-55", RegistryValueKind.ExpandString);
defaultIcon.SetValue("Full", @"%SystemRoot%\System32\imageres.dll,-54", RegistryValueKind.ExpandString);
defaultIcon.SetValue("Empty", @"%SystemRoot%\System32\imageres.dll,-55", RegistryValueKind.ExpandString);
//重新打开桌面
DesktopRefurbish.DeskRef();
}
}
}