c# - 以系统用户身份启动进程

标签 c# windows permissions administrator

我试图在 Windows 上使用代码(c#)从某些注册表项中读取一些值,我发现我无法读取这些值的原因是因为管理员用户没有权限:

因此,我手动导航到给我带来麻烦的注册表项,权限选项卡如下所示:

enter image description here

这让我思考如何以用户“system”身份运行进程?这听起来很奇怪,但显然有一个系统用户,对吧?我知道如何以管理员身份运行,但也许也可以作为系统运行。

编辑

这是我的代码。基本上我想遍历所有注册表项:

class Program
{
    // class to store reg key.
    [Serializable]
    [DebuggerDisplay("Name = {Name}, Val = {value}, type={type}")]
    class MyRegKey
    {
        public string Name;
        public object value;
        public RegistryValueKind type;
        public List<MyRegKey> SubKeys = new List<MyRegKey>();
        public List<MyRegKey> Values = new List<MyRegKey>();
    }

    static MyRegKey root = new MyRegKey();

    static void TraverseTree(RegistryKey key, MyRegKey temp)
    {
        foreach (var v in key.GetValueNames())
        {            
            var kind = key.GetValueKind(v);
            var value = key.GetValue(v, null);
            var name = v;

            temp.Values.Add(new MyRegKey { Name = name, value = value, type = kind });
        }

        var x = key.GetSubKeyNames();
        for (var i = 0; i < x.Length; i++)
        {
            RegistryKey productKey;
            productKey = key.OpenSubKey(x[i], false); // <--------- Code crashes here

            if (productKey != null)
            {
                var y = new MyRegKey() { Name = productKey.Name };
                temp.SubKeys.Add(y);
                Foo(productKey, y);
            }
        }        
    }

    public static void Main()
    {

        var key = Registry.LocalMachine;

        root.Name = key.Name;
        TraverseTree(key, root);
    }
}

我正在以管理员身份运行该代码...

这是我的程序如何崩溃并表明我没有权限的图像: enter image description here

最佳答案

PsExec -s 在系统帐户中运行远程进程

C:\Windows\system32>psexec -i -d -s cmd

PsExec v1.98 - Execute processes remotely
Copyright (C) 2001-2010 Mark Russinovich
Sysinternals - www.sysinternals.com


cmd started on SERGMATCOMP with process ID 5356.

PID5356 的 cmd 输出

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Windows\system32>whoami
nt authority\system

关于c# - 以系统用户身份启动进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14972045/

相关文章:

android - 如何实现只读的ContentProvider?

c# - 当我从 HTTP 重定向到 HTTPS 时,用户必须重新登录

c# - 如何让 Html.DropdownFor() 选择当前元素?

c# - HTMLAgilitypack 使用 ajax 调用读取 html 页面信息

windows - Kibana 无法连接到 docker 上的 Elasticsearch

Windows 10 : Docker exits containers immediately

c# - WPF C#错误的鼠标坐标

windows - 在Windows上解压缩.tar.gz文件

ios - 在单元测试中,我如何以编程方式关闭系统权限对话框?

vbscript - 在ASP脚本中使用wscript.shell时无法引用UNC路径?