0

对不起,如果我重复在网上许多地方发现的相同问题。请不要告诉“谷歌”,我做了很多谷歌搜索和 stackoverflow 搜索,找到了很多解决方案。没有什么能帮上忙。

我正在创建一个类似 Kiosk 的应用程序,我想在其中阻止用户访问任务管理器。通过我对 win32 api 的研究和谷歌搜索,我想出了以下代码。

        string user = Environment.UserDomainName + "\\" + Environment.UserName;
        RegistrySecurity rs = new RegistrySecurity();

        rs.AddAccessRule(new RegistryAccessRule(user,
            RegistryRights.FullControl,
            InheritanceFlags.None,
            PropagationFlags.None,
            AccessControlType.Allow));

        RegistryKey rk = null;

        try
        {
            rk = Registry.CurrentUser.CreateSubKey(
                @"Software\Microsoft\Windows\CurrentVersion\Policies\System",
                RegistryKeyPermissionCheck.Default, rs);

            rk.SetValue("DisableTaskMgr", 1);
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

        if (rk != null) rk.Close();

我仍然收到权限错误。我在 Windows 8 系统上。我的防病毒软件也被禁用。如果我手动进行注册表编辑,它会给出正确的结果。

在此处输入图像描述

请帮我解决这个问题。

4

1 回答 1

0

这是注册表中访问受限的一部分。您看到的访问被拒绝错误是合理且符合预期的。

看一下regedit下的权限。右键单击策略节点并选择权限。请注意,标准用户只有读取权限。您需要提升权限才能获得对注册表该部分的写访问权限。

于 2013-11-13T07:22:24.133 回答