SECDRV.SYS Not Loading in Windows 10; this will break thousands of older games.

Anonymous
2015-08-01T20:13:40+00:00

Hello,

I have discovered an unfortunate problem with Windows 10.

Many games from the early-mid 2000's used Macrovision's SafeDisc (version 2) as a means of copy protection. At game startup, Windows loaded SECDRV.SYS to verify an original game disc was in the drive, after which the game would start.

When you try to run ANY game which uses this SafeDisc form of copy protection in Windows 10, the following happens:

 - You get an error window that tells you to log in with Administrator Privileges and to try again. This happens on any account, even those with Administrator access. The game fails to start.

 - If you then set "Run as Admin" compatibility mode on the game's startup file, the message disappears, but the game doesn't start.

 - Keeping a window open for C:\WINDOWS\SYSWOW64\DRIVERS shows SECDRV.SYS appearing at the moment you try to start the game. Based on its size, it appears to be the file that is present on the game disc (tested across several games), even though I see no disc activity and cannot find the file elsewhere on my system.

 - The Windows event log shows that SECDRV.SYS failed to load.

 - This happens both with an upgraded install (Windows 8.1 > Windows 10) and with a fresh Windows 10 install, with one of the games being installed immediately upon the fresh install completing.

 - On my Windows 64-bit 8.1 system, C:\WINDOWS\WINSXS has a folder called amd64_macrovision-protection-safedisc_31bf3856ad364e35_6.3.9600.16384_none_4e6b3758913c9240 with a SECDRV.SYS in it, presumably the one that ships with Windows. Windows 10 had such a folder in early builds, but it is missing from the release build. It appears SafeDisc support is missing entirely.

OTHER TESTING I HAVE DONE:

 - I updated one of the games to a version that no longer required the CD check, and it started immediately and ran perfectly once the check was removed. However, this is possible only with a very limited number of games, or resorting to fixes that violate the game's EULA or put the user's system security at risk.

 - I tried disabling driver signature verification and installing one of the games again; same problem.

 - Multiple compatibility modes; same problem. XP (Service Pack 3) mode and / or Run as Administrator mode make the error message go away, but the games still fail to launch.

SIGNIFICANCE:

Unless this is fixed in Windows 10, a massive catalog of older games will cease to function in Windows 10 for the simple reason that they cannot pass the SafeDisc copy protection check. I am accustomed to some games breaking with every new version of Windows as technology progresses (for example, the loss of the ability to run 16-bit programs in 64-bit Windows), but this seems to be an unnecessarily harsh change.

Windows for home | Windows 10 | Gaming

Locked Question. This question was migrated from the Microsoft Support Community. You can vote on whether it's helpful, but you can't add comments or replies or follow the question.

0 comments No comments

293 answers

Sort by: Most helpful
  1. Anonymous
    2018-03-19T15:26:02+00:00

    Hey Guys I could be wrong. I don't know anything about coding, except maybe a little bit of HTML which does me no good with getting these games to work. Yes I am still pissed off at Microsoft and really have been for a fairly long time now. I hate losing games and other software every time MS changes their operating system, I too have a box full of games on disks. I keep telling myself that I am just going to set up an old computer with an older OS and keep it offline in order to have the ability to play many of these old games again.

    I do stay away from the MS store and I really hate how they keep pushing their stuff up in my face. I do intentionally try to use as few MS programs and services as possible because it is all full of spyware and I positively hate that they try so hard to invade my privacy. I also avoid the Google browser and services for the same reasons. I am an advocate/activist for Privacy Rights among other political and social justice issues.

    I am going to have to run dual OS's until I can make a complete transition to Linux. I am done with MS for sure.

    I have used dual boot for a long time, but now that I have more machines I have used remote desktop to play legacy games with XP etc. Bit of a nuisance but what else can I do besides find a DRM hack for every game out there.

    Was this answer helpful?

    1 person found this answer helpful.
    0 comments No comments
  2. Anonymous
    2018-03-08T16:37:59+00:00

    Was this answer helpful?

    1 person found this answer helpful.
    0 comments No comments
  3. Anonymous
    2018-02-18T15:59:41+00:00

    You don't need to disable integrity checks.

    These changes are persistent. You need to boot to Windows and run bcdedit to turn off test signing or it will stay on after every reboot.

    After any changes with bcdedit you need to reboot to activate the changed setting. Test signing is visible on the desktop if it is enabled, so that's how you can find out whether anything or anyone turned it on or off.

    Was this answer helpful?

    1 person found this answer helpful.
    0 comments No comments
  4. Anonymous
    2018-02-18T14:35:55+00:00

    Microsoft does provide a way to re-enable SECDRV.

    • Install a game that brings (a recent version of) SECDRV.sys.
    • Install the Windows 10 SDK from Get the standalone Windows 10 SDK. Just install all components, cuz who cares.
    • Start PowerShell as Administrator.
    • Find makecat.exe, makecert.exe and signtool.exe and add the path to your PATH:

    dir -Directory -Path 'C:\Program Files (x86)\Windows Kits\10' -Recurse |

    where BaseName -eq "x86" |

    where { (dir $_.FullName -Filter makecert.exe) -ne $null } |

    where { (dir $_.FullName -Filter makecat.exe) -ne $null } |

    where { (dir $_.FullName -Filter signtool.exe) -ne $null } |

    select -First 1 |

    foreach { $env:Path = "$env:Path;$($_.FullName)" }

    • The ones in a x86 subfolder are always OK on all Intel architecture chips. No need to match the hardware or the OS bitness.
    • Create a new folder, copy SECDRV.sys in it. If it's an old version, use this one here. Its from September 2006.

    mkdir "$env:USERPROFILE\Downloads\SECDRV" | Out-Null

    cd "$env:USERPROFILE\Downloads\SECDRV"

    • If it's an old version, use this one here. Its from September 2006.

    curl -UseBasicParsing -Uri "https://github.com/ericwj/PsSecDrv/raw/master/tools/SECDRV/SECDRV.sys" -OutFile "SECDRV.sys"

    • Enable test signing boot mode.

    bcdedit /set "{current}" testsigning on

    • Pick a subject for the certificate.

    $Subject = "SECDRV.sys signing for $env:USERDOMAIN$env:USERNAME on $("{0:dd-MMM-yy HH:mm}" -f [datetime]::Now)"

    • Create a root certificate.

    makecert -r -sr LocalMachine -ss My -n "CN=$Subject"

    • Open Local Machine Certificates.

    certlm.msc

    • Go to Personal, Certificates and select the certificate created, there usually is only one, or match the subject, right click Copy.
    • Go to Trusted Root Certification Authorities, Certificates. Paste.
    • Go to Trusted Publishers, Certificates. Paste.
    • Make a text file called SECDRV.cdf in the folder and put this in it.

    [CatalogHeader]

    Name=SECDRV.cat

    PublicVersion=0x1

    EncodingType=0x00010001

    CATATTR1=0x10010001:OSAttr:2:6.0

    [CatalogFiles]

    <hash>SECDRV=SECDRV.sys

    • Make a driver catalog file in the folder.

    makecat -o SECDRV.txt -r SECDRV.cdf

    • Sign the driver. Use the thumbprint as shown in certlm for the certificate created, just double click it and look around, without spaces. Or get it in PowerShell with dir:

    $Cert = dir Cert:\LocalMachine -Recurse | where Subject -Match ([regex]::Escape($Subject)) | select -First 1

    $Thumbprint = $Cert.Thumbprint

    signtool sign /sm /s Root /sha1 "$Thumbprint" /t "http://timestamp.verisign.com/scripts/timstamp.dll" secdrv.cat

    • Install the driver.

    signtool catdb /u secdrv.cat

    • Reboot.
    • Test if it works.

    sc.exe start secdrv

    If it doesn't work,

    • one reason is the SECDRV.sys on your system is too old. Then the driver doesn't start.
    • Another reason is Secure Boot is enabled. Run bcdedit again after disabling it.
    • Another reason is you didn't reboot. You will have to reboot.
    • On 64-bit systems, SECDRV might still report 'This driver is blocked from loading' if it is configured with C:\Windows\SysWOW64\drivers\SECDRV.sys as the binary path. To 1) verify and fix this, 2) copy SECDRV.sys and 3) change the binary path of the driver service:

    sc.exe qc secdrv

    copy C:\Windows\SysWOW64\drivers\SECDRV.sys C:\Windows\System32\drivers

    sc.exe config secdrv binpath= C:\Windows\System32\drivers\SECDRV.sys

    In PowerShell, don't omit the ".exe." in sc.exe. Nothing will appear to happen, but you will have ended up with a file called "start", "qc" or "config" that contains the text "secdrv" because sc is short for Set-Content...

    Now play games.

    Thanks, this enabled me to install and run the Sims Deluxe and it's various expansion packs without the need for a NoCD. Certain it will work with other games that require SECDRV.sys.

    It's not perfect but this is the only way to restore full functionality with old discs. I wonder how severe the security vulnerability is though once this is enabled?

    I don't doubt this will work but if i have to do all this I really don't want to take a chance it will cause a problem with my computer.

    Was this answer helpful?

    1 person found this answer helpful.
    0 comments No comments
  5. Deleted

    This answer has been deleted due to a violation of our Code of Conduct. The answer was manually reported or identified through automated detection before action was taken. Please refer to our Code of Conduct for more information.


    Comments have been turned off. Learn more