gpt4 book ai didi

c# - 从服务器获取 Windows 登录名

转载 作者:可可西里 更新时间:2023-11-01 10:40:33 32 4
gpt4 key购买 nike

我已经在这个问题上停留了好几天 - 非常感谢任何帮助。

我有一个调用用 C# 编写的 DLL 的 SQL 触发器。在此函数中,我需要发起触发触发器的 SQL 命令的人员的 Windows 登录名。我是从 C# 还是 SQL 获取此信息并不重要。

不幸的是,大多数正常路线对我来说都失败了。

内置 SQL 函数 NT_CLIENT() 仅在 SQL 登录使用 Windows 身份验证时有效。

DLL 在服务器上运行,因此 Environment.UserName 不相关并且 WindowsIdentity.GetCurrent().Name 返回一个空字符串,除非数据库用户(线程发起者)正在使用 Windows 身份验证。

我知道域名、IP 地址和工作站名称。由此我想出了如何在 C# 中获取 SID - 无论如何我可以使用 C# 从这些信息中获取 Windows 登录名,或者是否有我错过的 SQL 内置函数?

编辑:感谢您让我知道 SQL 无法解决这个问题。我们拥有的是一个客户端,可以将每个人作为一个用户登录到数据库中。我最终要做的是制作一个调用命令行函数 WMIC 的不安全程序集。令人讨厌的解决方案,但它完成了工作。再次感谢你的建议。 :)

最佳答案

您必须将客户端代码中的用户名作为参数传入。我们在客户端代码(网站和服务)的每次调用中都这样做。

但是,即使那样它在触发器中也不可用,所以我使用 CONTEXT_INFO。

对不起,没有魔法,没有 Elixir 。

您的另一种选择是查看安全帐户委派/直通。 Google search ...有很多好东西,可能比一个特定链接更好。

如果这是不可能的,并且您说您不能更改客户端代码,那么它就无法完成。数据根本不可用:应用程序架构故意如此。

关于c# - 从服务器获取 Windows 登录名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2373010/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com