Win+R → services.msc → 停止所有 Oracle* 服務⚠️ 先匯出備份:檔案 → 匯出 → 全部
| 路徑 | 刪除對象 |
|---|---|
| HKLM\SYSTEM\CurrentControlSet\Services | 所有 Oracle*, OraWeb*, OraClrAgnt* |
| HKLM\SYSTEM\CurrentControlSet\Services\Eventlog\Application | 所有 Oracle* |
| HKLM\SOFTWARE\ORACLE | 整個金鑰 |
| HKLM\SOFTWARE\ODBC\ODBCINST.INI | 除 Microsoft ODBC for Oracle 外含 Oracle 的金鑰 |
| HKCR (HKEY_CLASSES_ROOT) | Ora*, Oracle*, Orcl*, EnumOra* |
| HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu\Programs | Oracle* |
Win+Pause → 進階 → 環境變數 → 編輯 Path、CLASSPATH → 移除所有 Oracle 路徑%ORACLE_BASE% (如 C:\app\oracle, D:\Oracle)C:\Program Files\OracleC:\Program Files (x86)\Oracle%TEMP%\*, %TMP%\* Oracle 相關暫存檔C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Oracle*C:\Windows\ORACLE.INI, oradim*.INI, oraodbc.iniodbcad32.exe (32-bit) / odbcad32.exe (64-bit, SysWOW64) → 系統 DSN / 使用者 DSN → 刪除所有 Oracle 開頭Oracle* → 清除記錄regedit 搜尋 "Oracle" 無結果services.msc 無 Oracle 服務odbcad32 無 Oracle DSN%PATH% 無 Oracle 路徑# 停用並禁用服務
Get-Service -Name "Oracle*" | ForEach-Object {
$_.Stop(); $_.WaitForStatus('Stopped', 30)
Set-Service -Name $_.Name -StartupType Disabled
}
# 刪除註冊表
$regPaths = @(
'HKLM:\SOFTWARE\ORACLE',
'HKLM:\SYSTEM\CurrentControlSet\Services\Oracle*',
'HKLM:\SYSTEM\CurrentControlSet\Services\OraWeb*',
'HKLM:\SYSTEM\CurrentControlSet\Services\Eventlog\Application\Oracle*',
'HKLM:\SOFTWARE\ODBC\ODBCINST.INI\Oracle*',
'HKCR:\Ora*', 'HKCR:\Oracle*', 'HKCR:\Orcl*', 'HKCR:\EnumOra*',
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu\Programs\Oracle*'
)
$regPaths | ForEach { Remove-Item -Path $_ -Recurse -Force -ErrorAction SilentlyContinue }
# 環境變數
$path = [Environment]::GetEnvironmentVariable('PATH','Machine')
$newPath = ($path -split ';' | Where-Object { $_ -notmatch 'Oracle' }) -join ';'
[Environment]::SetEnvironmentVariable('PATH', $newPath, 'Machine')
Write-Host "清理完成,請重啟電腦後刪除檔案目錄。"
HKLM\SOFTWARE\Oracle\inst_loc 可能殘留