我有一个winforms应用程序,它使用SQL Express后端(始终在本地计算机上)。 我遇到了各种用户问题,其中用户执行在特定位置创建新数据库的任务,但事实证明“NT Authority \ Network Service”对他们指定的位置没有足够的权限。
我想在运行时检查运行SQLSERVR的用户是否可以访问特定文件夹。
我已经运行WMI代码来确定SQLSERVR进程的用户/ SID。我的下一步是尝试获取用户的WindowsIdentity / WindowsPrincipal,以便我可以查询文件访问规则。
但是我被卡住了 - 如果我拥有的是用户/域/ SID,我怎么能可靠地获得WindowsIdentity?看起来似乎没有一个适合这个的构造函数?
答案 0 :(得分:1)
您必须pingvon LogonUser才能获得令牌。我非常怀疑它会起作用,这些服务帐户具有很高的特权。
请问自己这是否值得麻烦。也许警告是可取的,但你无法自己解决问题。它需要管理员才能真正解决问题。专注于从您获得的异常中获得良好的诊断。
答案 1 :(得分:0)
我可以建议您采用不同的(更简单的)方法吗?尝试模拟服务/用户帐户并编写快速临时文件,然后将其删除。如果您可以编写该文件(并将其删除),您可以确定SQL Server可以执行相同的操作。
以下是关于模拟NETWORK SERVICE帐户的帖子:http://geek.hubkey.com/2008/02/impersonating-built-in-service-account.html