You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Windows所有可登录用户设置全局凭据?

为所有可登录用户设置凭据的可行方案

你尝试的几种方法本质都是在当前用户上下文下操作,所以凭据仅对该用户可见。Windows默认凭据管理器没有直接的「全局所有用户」设置选项,但可以通过以下两种可行方案实现:

一、组策略部署(推荐企业/域环境)

这是最稳定且易于管理的批量推送方法:

  • 以管理员身份打开组策略编辑器:运行gpedit.msc
  • 导航路径:用户配置 > 控制面板设置 > 凭据管理器
  • 右键选择新建 > Windows凭据,填写目标名称、用户名、密码
  • 配置组策略应用范围(域内所有用户/本地所有用户),更新组策略后,所有用户登录时会自动获取该凭据
  • 注意:组策略部署的凭据用户无法自行修改,仅管理员可通过组策略更新

二、系统级API写入(需开发/脚本能力)

Windows的计算机级凭据存储在HKLM注册表路径下,需要在系统账户上下文(NT AUTHORITY\SYSTEM)中调用底层API写入:

  1. C# 调用Win32 API
    使用CredWrite函数,指定持久化类型为CRED_PERSIST_LOCAL_MACHINE(值为2),且必须在系统账户下运行代码:
using System;
using System.Runtime.InteropServices;

public class GlobalCredential
{
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
    private struct CREDENTIAL
    {
        public uint Flags;
        public uint Type;
        public string TargetName;
        public string Comment;
        public System.Runtime.InteropServices.ComTypes.FILETIME LastWritten;
        public uint CredentialBlobSize;
        public IntPtr CredentialBlob;
        public uint Persist;
        public uint AttributeCount;
        public IntPtr Attributes;
        public string TargetAlias;
        public string UserName;
    }

    [DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    private static extern bool CredWrite([In] ref CREDENTIAL credential, [In] uint flags);

    public static bool WriteGlobalCredential(string target, string username, string password)
    {
        CREDENTIAL cred = new CREDENTIAL();
        cred.Type = 1; // 普通Windows凭据
        cred.TargetName = target;
        cred.UserName = username;
        byte[] passwordBytes = System.Text.Encoding.Unicode.GetBytes(password);
        cred.CredentialBlob = Marshal.AllocHGlobal(passwordBytes.Length);
        Marshal.Copy(passwordBytes, 0, cred.CredentialBlob, passwordBytes.Length);
        cred.CredentialBlobSize = (uint)passwordBytes.Length;
        cred.Persist = 2; // CRED_PERSIST_LOCAL_MACHINE
        cred.Flags = 0;

        bool result = CredWrite(ref cred, 0);
        Marshal.FreeHGlobal(cred.CredentialBlob);
        return result;
    }
}

运行方式:通过任务计划程序创建系统级任务,设置「不管用户是否登录都要运行」,并勾选「使用最高权限」,执行包含上述代码的程序。

  1. PowerShell 系统级执行
    使用PsExec或任务计划程序以系统账户运行PowerShell脚本,调用CredWriteAPI,核心是必须在系统上下文下操作,避免用户上下文限制。

注意事项

  • 系统级凭据对所有登录用户可见,但需要管理员权限才能修改或删除
  • 避免存储明文密码,尽量使用加密后的凭据Blob
  • 组策略方案无需编写代码,适合大规模部署;API方案适合自定义需求场景

内容的提问来源于stack exchange,提问作者Marab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:13:19