Después de mucho luchar hemos dado con la respuesta de esta duda que muchos lectores de este sitio han presentado. Si tienes algún detalle que aportar no dejes de compartir tu información.
Solución:
Este es un script completo de PS1 para eliminar todo rastro de si:
Import-Module -DisableNameChecking $PSScriptRoot..libforce-mkdir.psm1
Import-Module -DisableNameChecking $PSScriptRoot..libtake-own.psm1
echo "73 OneDrive process and explorer"
taskkill.exe /F /IM "OneDrive.exe"
taskkill.exe /F /IM "explorer.exe"
echo "Remove OneDrive"
if (Test-Path "$env:systemrootSystem32OneDriveSetup.exe")
& "$env:systemrootSystem32OneDriveSetup.exe" /uninstall
if (Test-Path "$env:systemrootSysWOW64OneDriveSetup.exe")
& "$env:systemrootSysWOW64OneDriveSetup.exe" /uninstall
echo "Disable OneDrive via Group Policies"
force-mkdir "HKLM:SOFTWAREWow6432NodePoliciesMicrosoftWindowsOneDrive"
sp "HKLM:SOFTWAREWow6432NodePoliciesMicrosoftWindowsOneDrive" "DisableFileSyncNGSC" 1
echo "Removing OneDrive leftovers trash"
rm -Recurse -Force -ErrorAction SilentlyContinue "$env:localappdataMicrosoftOneDrive"
rm -Recurse -Force -ErrorAction SilentlyContinue "$env:programdataMicrosoft OneDrive"
rm -Recurse -Force -ErrorAction SilentlyContinue "C:OneDriveTemp"
echo "Remove Onedrive from explorer sidebar"
New-PSDrive -PSProvider "Registry" -Root "HKEY_CLASSES_ROOT" -Name "HKCR"
mkdir -Force "HKCR:CLSID 18D5C66-4533-4307-9B53-224DE2ED1FE6"
sp "HKCR:CLSID 18D5C66-4533-4307-9B53-224DE2ED1FE6" "System.IsPinnedToNameSpaceTree" 0
mkdir -Force "HKCR:Wow6432NodeCLSID 18D5C66-4533-4307-9B53-224DE2ED1FE6"
sp "HKCR:Wow6432NodeCLSID 18D5C66-4533-4307-9B53-224DE2ED1FE6" "System.IsPinnedToNameSpaceTree" 0
Remove-PSDrive "HKCR"
echo "Removing run option for new users"
reg load "hkuDefault" "C:UsersDefaultNTUSER.DAT"
reg delete "HKEY_USERSDefaultSOFTWAREMicrosoftWindowsCurrentVersionRun" /v "OneDriveSetup" /f
reg unload "hkuDefault"
echo "Removing startmenu junk entry"
rm -Force -ErrorAction SilentlyContinue "$env:userprofileAppDataRoamingMicrosoftWindowsStart MenuProgramsOneDrive.lnk"
echo "Restarting explorer..."
start "explorer.exe"
echo "Wait for EX reload.."
sleep 15
echo "Removing additional OneDrive leftovers"
foreach ($item in (ls "$env:WinDirWinSxS*onedrive*"))
Takeown-Folder $item.FullName
rm -Recurse -Force $item.FullName
Si desea la forma de desinstalación fácil, abra cmd en modo de administrador, escriba taskkill /f /im OneDrive.exe
para finalizar el proceso de OneDrive.
Luego escribe ya sea %SystemRoot%System32OneDriveSetup.exe /uninstall
si está usando 32 bits o %SystemRoot%SysWOW64OneDriveSetup.exe /uninstall
si está utilizando Windows 10 de 64 bits.
Actualización: Función para la creación de directorios forzada:
function force-mkdir($path)
if (!(Test-Path $path))
#Write-Host "-- Creating full path to: " $path -ForegroundColor White -BackgroundColor DarkGreen
New-Item -ItemType Directory -Force -Path $path
Asimilación de la propiedad del registro:
function Takeown-Registry($key)
# TODO does not work for all root keys yet
switch ($key.split('')[0])
"HKEY_CLASSES_ROOT"
$reg = [Microsoft.Win32.Registry]::ClassesRoot
$key = $key.substring(18)
"HKEY_CURRENT_USER"
$reg = [Microsoft.Win32.Registry]::CurrentUser
$key = $key.substring(18)
"HKEY_LOCAL_MACHINE"
$reg = [Microsoft.Win32.Registry]::LocalMachine
$key = $key.substring(19)
# get administraor group
$admins = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-544")
$admins = $admins.Translate([System.Security.Principal.NTAccount])
# set owner
$key = $reg.OpenSubKey($key, "ReadWriteSubTree", "TakeOwnership")
$acl = $key.GetAccessControl()
$acl.SetOwner($admins)
$key.SetAccessControl($acl)
# set FullControl
$acl = $key.GetAccessControl()
$rule = New-Object System.Security.AccessControl.RegistryAccessRule($admins, "FullControl", "Allow")
$acl.SetAccessRule($rule)
$key.SetAccessControl($acl)
function Takeown-File($path)
takeown.exe /A /F $path
$acl = Get-Acl $path
# get administraor group
$admins = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-544")
$admins = $admins.Translate([System.Security.Principal.NTAccount])
# add NT AuthoritySYSTEM
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($admins, "FullControl", "None", "None", "Allow")
$acl.AddAccessRule($rule)
Set-Acl -Path $path -AclObject $acl
function Takeown-Folder($path)
Takeown-File $path
foreach ($item in Get-ChildItem $path)
if (Test-Path $item -PathType Container)
Takeown-Folder $item.FullName
else
Takeown-File $item.FullName
function Elevate-Privileges
param($Privilege)
$Definition = @"
using System;
using System.Runtime.InteropServices;
public class AdjPriv
[DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr rele);
[DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);
[DllImport("advapi32.dll", SetLastError = true)]
internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid);
[StructLayout(LayoutKind.Sequential, Pack = 1)]
internal struct TokPriv1Luid
public int Count;
public long Luid;
public int Attr;
internal const int SE_PRIVILEGE_ENABLED = 0x00000002;
internal const int TOKEN_QUERY = 0x00000008;
internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;
public static bool EnablePrivilege(long processHandle, string privilege)
bool retVal;
TokPriv1Luid tp;
IntPtr hproc = new IntPtr(processHandle);
IntPtr htok = IntPtr.Zero;
retVal = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES
"@
$ProcessHandle = (Get-Process -id $pid).Handle
$type = Add-Type $definition -PassThru
$type[0]::EnablePrivilege($processHandle, $Privilege)
Solo conozco un método CMD para desinstalar OneDrive:
-
Abra el símbolo del sistema como administrador
-
Escribir
taskkill /f /im OneDrive.exe
para terminar cualquier proceso de OneDrive y presione Enter. -
Escribir
%SystemRoot%SysWOW64OneDriveSetup.exe /uninstall
si está usando Windows 10 de 64 bits y presione Enter.
No verá un cuadro de diálogo de confirmación o una barra de progreso cuando haga esto, pero si intenta buscar OneDrive, la aplicación ya no se encontrará. Por supuesto, su carpeta y archivos de OneDrive, sin embargo, seguirán estando disponibles.
Aquí está el método CMD de Origami en PowerShell:
ps onedrive | Stop-Process -Force
start-process "$env:windirSysWOW64OneDriveSetup.exe" "/uninstall"
Recuerda que tienes la capacidad de valorar este enunciado si te fue de ayuda.