mirror of
https://github.com/yeongpin/cursor-free-vip.git
synced 2025-08-03 04:57:36 +08:00

test now may be need time and this change and determinate all other tools and this tool will be favourite of all users
142 lines
4.9 KiB
Python
142 lines
4.9 KiB
Python
import os
|
||
import shutil
|
||
import platform
|
||
import time
|
||
import uuid
|
||
import subprocess
|
||
|
||
def delete_directory(path):
|
||
"""Deletes a directory and all its contents."""
|
||
if os.path.exists(path):
|
||
try:
|
||
shutil.rmtree(path)
|
||
print(f"✅ Removed: {path}")
|
||
except Exception as e:
|
||
print(f"❌ Failed to remove: {path} -> {e}")
|
||
else:
|
||
print(f"🔍 Not found: {path}")
|
||
|
||
def delete_file(path):
|
||
"""Deletes a file if it exists."""
|
||
if os.path.isfile(path):
|
||
try:
|
||
os.remove(path)
|
||
print(f"✅ Removed file: {path}")
|
||
except Exception as e:
|
||
print(f"❌ Failed to remove file: {path} -> {e}")
|
||
else:
|
||
print(f"🔍 Not found: {path}")
|
||
|
||
def reset_machine_id():
|
||
"""Resets the machine ID to a new UUID."""
|
||
new_id = str(uuid.uuid4())
|
||
if platform.system() == "Windows":
|
||
try:
|
||
subprocess.run(
|
||
["reg", "add", "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography", "/v", "MachineGuid", "/d", new_id, "/f"],
|
||
check=True,
|
||
stdout=subprocess.PIPE,
|
||
stderr=subprocess.PIPE
|
||
)
|
||
print(f"✅ MachineGuid reset to: {new_id}")
|
||
except subprocess.CalledProcessError as e:
|
||
print(f"❌ Failed to reset MachineGuid: {e}")
|
||
elif platform.system() == "Linux":
|
||
machine_id_paths = ["/etc/machine-id", "/var/lib/dbus/machine-id"]
|
||
for path in machine_id_paths:
|
||
if os.path.exists(path):
|
||
try:
|
||
with open(path, 'w') as f:
|
||
f.write(new_id)
|
||
print(f"✅ Reset machine ID at: {path}")
|
||
except Exception as e:
|
||
print(f"❌ Failed to reset machine ID at {path}: {e}")
|
||
elif platform.system() == "Darwin": # macOS
|
||
# macOS typically doesn't use a machine-id file like Linux
|
||
print("ℹ️ macOS does not use a machine-id file. Skipping machine ID reset.")
|
||
else:
|
||
print("❌ Unsupported operating system for machine ID reset.")
|
||
|
||
def reset_cursor():
|
||
print("\n🚀 Resetting Cursor AI...\n")
|
||
|
||
# Platform-specific paths
|
||
paths = []
|
||
if platform.system() == "Linux":
|
||
paths = [
|
||
os.path.expanduser("~/.cursor"),
|
||
os.path.expanduser("~/.local/share/cursor"),
|
||
os.path.expanduser("~/.config/cursor"),
|
||
os.path.expanduser("~/.cache/cursor"),
|
||
"/usr/local/bin/cursor",
|
||
"/opt/cursor",
|
||
"/usr/bin/cursor",
|
||
os.path.expanduser("~/.cursor/machine-id.db"),
|
||
os.path.expanduser("~/.local/share/Cursor"),
|
||
os.path.expanduser("~/.config/Cursor"),
|
||
os.path.expanduser("~/.cache/Cursor")
|
||
]
|
||
elif platform.system() == "Darwin": # macOS
|
||
paths = [
|
||
os.path.expanduser("~/Library/Application Support/Cursor"),
|
||
os.path.expanduser("~/Library/Caches/Cursor"),
|
||
"/Applications/Cursor.app",
|
||
os.path.expanduser("~/Library/Preferences/com.cursor.app.plist"),
|
||
]
|
||
elif platform.system() == "Windows":
|
||
paths = [
|
||
os.path.expanduser("~\\AppData\\Local\\Cursor"),
|
||
os.path.expanduser("~\\AppData\\Roaming\\Cursor"),
|
||
os.path.expanduser("~\\.cursor"),
|
||
os.path.expanduser("~\\.config\\Cursor"),
|
||
os.path.expanduser("~\\.cache\\Cursor"),
|
||
"C:\\Program Files\\Cursor",
|
||
"C:\\Program Files (x86)\\Cursor",
|
||
"C:\\Users\\%USERNAME%\\AppData\\Local\\Cursor",
|
||
"C:\\Users\\%USERNAME%\\AppData\\Roaming\\Cursor",
|
||
]
|
||
|
||
# Remove directories
|
||
for path in paths:
|
||
delete_directory(path)
|
||
|
||
# Remove common files related to Cursor
|
||
files = [
|
||
os.path.expanduser("~/.cursor/machine-id.db"),
|
||
os.path.expanduser("~/.local/share/cursor.db"),
|
||
os.path.expanduser("~/.config/cursor/preferences.json"),
|
||
os.path.expanduser("~/.cache/cursor.log"),
|
||
]
|
||
|
||
for file in files:
|
||
delete_file(file)
|
||
|
||
# Extra cleanup (wildcard search)
|
||
print("\n🔍 Deep scanning for hidden Cursor files...")
|
||
base_dirs = ["/tmp", "/var/tmp", os.path.expanduser("~")] # Linux and macOS
|
||
if platform.system() == "Windows":
|
||
base_dirs = ["C:\\Temp", "C:\\Windows\\Temp", os.path.expanduser("~")] # Windows
|
||
|
||
for base in base_dirs:
|
||
for root, dirs, files in os.walk(base):
|
||
for dir in dirs:
|
||
if "cursor" in dir.lower():
|
||
delete_directory(os.path.join(root, dir))
|
||
for file in files:
|
||
if "cursor" in file.lower():
|
||
delete_file(os.path.join(root, file))
|
||
|
||
# Reset machine ID
|
||
reset_machine_id()
|
||
|
||
print("\n✅ Cursor AI has been completely reset!")
|
||
|
||
def main():
|
||
start_time = time.time()
|
||
reset_cursor()
|
||
end_time = time.time()
|
||
print(f"\n⏱️ Completed in {end_time - start_time:.2f} seconds.")
|
||
|
||
if __name__ == '__main__':
|
||
main()
|