我正在嘗試使用ZwDeleteKey洗掉注冊表符號鏈接。
我是這樣匯入的:
[DllImport("NtosKrnl.exe", CharSet = CharSet.Ansi, EntryPoint = "ZwDeleteKey", SetLastError = true)]
private static extern int ZwDeleteKey(SafeRegistryHandle hKey);
但是在我呼叫它之后,我收到一個例外:
“外部組件引發的例外”
我的完整代碼:
[DllImport("NtosKrnl.exe", CharSet = CharSet.Ansi, EntryPoint = "ZwDeleteKey", SetLastError = true)]
private static extern int ZwDeleteKey(SafeRegistryHandle hKey);
public static RegistryKey OpenSubKeySymLink(this RegistryKey key, string name, RegistryRights rights = RegistryRights.ReadKey, RegistryView view = 0)
{
var error = RegOpenKeyExW(key.Handle, name, REG_OPTION_OPEN_LINK, ((int)rights) | ((int)view), out var subKey);
if (error != 0)
{
subKey.Dispose();
throw new Win32Exception(error);
}
return RegistryKey.FromHandle(subKey);
}
static void Main(string[] args)
{
RegistryKey key;
key = OpenSubKeySymLink(Microsoft.Win32.Registry.CurrentUser, @"SOFTWARE\Microsoft\Windows\ABC", RegistryRights.ReadKey, 0);
ZwDeleteKey(key.Handle);
}
uj5u.com熱心網友回復:
ZwDeleteKey的官方檔案確實提到“NtosKrnl.exe”是“DLL”,但這是錯誤的,匯入定義應該是這樣的(加上沒有涉及字串,入口點不模糊,函式沒有設定最后一個錯誤):
[DllImport("ntdll")]
private static extern int ZwDeleteKey(SafeRegistryHandle hKey);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/411749.html
標籤:
上一篇:獲取H.264視頻的解碼器MFT
