drdread
  • drdread
  • 100% (Exalted)
  • Advanced Member Topic Starter
3 years ago
Is this a Windows Update issue? 😣

Log Name: Microsoft-Windows-AppModel-Runtime/Admin
Source: Microsoft-Windows-AppModel-Runtime
Date: 8/26/2020 6:26:34 PM
Event ID: 65
Task Category: None
Level: Error
Keywords: Process
User: domain.local\username
Computer: computer.domain.local
Description:
Failed with 0x57 retrieving AppModel Runtime status for package Windows.
Event Xml:



65
0
2
0
0
0x2000000000000001

14094


Microsoft-Windows-AppModel-Runtime/Admin
computer.domain.local



87
Windows

Sponsor

Want to thank us? Use: Patreon or PayPal or Bitcoins: bc1q4whppe29dw77rm4kv4pln0gqae4yjnxly0dny0hky6yhnafukzjsyrsqhk

All opinions expressed within these pages are sent in by members of the public or by our staff in their spare time, and as such do not represent any opinion held by sircles.net Ltd or their partners.


Lemonde
  • Lemonde
  • 100% (Exalted)
  • Advanced Member
3 years ago
This is what I had to do to regain control of my graphics card:

Sourced from Microsoft Answers:

1. Run the following script in powershell using 'run as administrator' privileges:


function enable-privilege
{ param(
http://msdn.microsoft.com/en-us/library/bb530716 (VS.85).aspx
[ValidateSet(
"SeAssignPrimaryTokenPrivilege", "SeAuditPrivilege", "SeBackupPrivilege", "SeChangeNotifyPrivilege", "SeCreateGlobalPrivilege",
"SeCreatePagefilePrivilege", "SeCreatePermanentPrivilege", "SeCreateSymbolicLinkPrivilege", "SeCreateTokenPrivilege",
"SeDebugPrivilege", "SeEnableDelegationPrivilege", "SeImpersonatePrivilege", "SeIncreaseBasePriorityPrivilege",
"SeIncreaseQuotaPrivilege", "SeIncreaseWorkingSetPrivilege", "SeLoadDriverPrivilege", "SeLockMemoryPrivilege",
"SeMachineAccountPrivilege", "SeManageVolumePrivilege", "SeProfileSingleProcessPrivilege", "SeRelabelPrivilege",
"SeRemoteShutdownPrivilege", "SeRestorePrivilege", "SeSecurityPrivilege", "SeShutdownPrivilege", "SeSyncAgentPrivilege",
"SeSystemEnvironmentPrivilege", "SeSystemProfilePrivilege", "SeSystemtimePrivilege", "SeTakeOwnershipPrivilege", "SeTcbPrivilege",
"SeTimeZonePrivilege", "SeTrustedCredManAccessPrivilege", "SeUndockPrivilege", "SeUnsolicitedInputPrivilege")]
$Privilege,
## The process on which to adjust the privilege. Defaults to the current process.
$ProcessId = $pid,
## Switch to disable the privilege, rather than enable it.
[Switch] $Disable
)
## Taken from P/Invoke.NET with minor adjustments.
$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 relen);

[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 SE_PRIVILEGE_DISABLED = 0x00000000;
internal const int TOKEN_QUERY = 0x00000008;
internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;
public static bool EnablePrivilege(long processHandle, string privilege, bool disable)
{
bool retVal;
TokPriv1Luid tp;
IntPtr hproc = new IntPtr(processHandle);
IntPtr htok = IntPtr.Zero;
retVal = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok);
tp.Count = 1;
tp.Luid = 0;
if(disable)
{
tp.Attr = SE_PRIVILEGE_DISABLED;
}
else
{
tp.Attr = SE_PRIVILEGE_ENABLED;
}
retVal = LookupPrivilegeValue(null, privilege, ref tp.Luid);
retVal = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero);
return retVal;
}
}
'@
$processHandle = (Get-Process -id $ProcessId).Handle
$type = Add-Type $definition -PassThru
$type[0]::EnablePrivilege($processHandle, $Privilege, $Disable)
}
#------------------------------------------------------------------------------------------------------------------------------------------------------
function Takeown-Registry($key)
{ 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)
}
}

# take ownership
$key = $reg.OpenSubKey($key, "ReadWriteSubTree", "TakeOwnership")
$owner = [Security.Principal.NTAccount]"Administrators"
$acl = $key.GetAccessControl()
$acl.SetOwner($owner)
$key.SetAccessControl($acl)

# set FullControl
$acl = $key.GetAccessControl()
$rule = New-Object System.Security.AccessControl.RegistryAccessRule("Administrators", "FullControl", "Allow")
$acl.SetAccessRule($rule)
$key.SetAccessControl($acl)

# reset owner
$owner = [Security.Principal.NTAccount]"NT SERVICE\TrustedInstaller"
$acl = $key.GetAccessControl()
$acl.SetOwner($owner)
$key.SetAccessControl($acl)
}
#------------------------------------------------------------------------------------------------------------------------------------------------------
# Grant authority to registry key

Write-Host; Write-Host "Elevating privileges for this process" -f yellow; Write-Host

do {$result = enable-privilege SeTakeOwnershipPrivilege }
until ($result -eq $true)
do {$result = enable-privilege SeRestorePrivilege }
until ($result -eq $true)

$key="HKEY_CLASSES_ROOT\AppID\{4839DDB7-58C2-48F5-8283-E1D1807D0D7D}"
Write-Host "Granting authority to $key"
Takeown-Registry($key)

$key="HKEY_CLASSES_ROOT\CLSID\{6B3B8D23-FA8D-40B9-8DBD-B950333E2C52}"
Write-Host "Granting authority to $key"
Takeown-Registry($key)

Write-Host; Write-Host "Done"; Write-Host


2. Open Regedit to this key: Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\

Open Event Viewer and find the 10016 error

Open the event and click the Detail Tab

Click the +System in friendly view & copy the GUID number

Go back to Regedit and press [CTRL] + F and search for the GUID number

Set the enabled key to Zero 0

Now I can use the GPU again.
drdread
  • drdread
  • 100% (Exalted)
  • Advanced Member Topic Starter
3 years ago
Is that what it always means though - a GPU driver error?

It looks like an update issue to me
Lemonde
  • Lemonde
  • 100% (Exalted)
  • Advanced Member
3 years ago
No it is definitely related to GPU driver issues and this script has fixed it for some people.