【问题标题】:Determine whether the SQLSERVR process has write access to a given folder (C#)确定 SQLSERVR 进程是否对给定文件夹具有写入权限 (C#)
【发布时间】:2010-12-08 23:35:49
【问题描述】:

我有一个使用 SQL Express 后端(始终在本地计算机上)的 winforms 应用程序。 我遇到了各种用户问题,其中用户执行在特定位置创建新数据库的任务,但事实证明“NT Authority\Network Service”对他们指定的位置没有足够的权限。

我想在运行时检查运行 SQLSERVR 的用户是否有权访问特定文件夹。

我已运行 WMI 代码以确定 SQLSERVR 进程的用户/SID。我的下一步是尝试获取用户的 WindowsIdentity/WindowsPrincipal 以便我可以查询文件访问规则。

但我被困住了 - 当我只有用户/域/SID 时,我怎样才能可靠地获得 WindowsIdentity? 似乎没有一个非常适合这个的构造函数?

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    您必须 pinvoke LogonUser 才能获得令牌。我严重怀疑这是否可行,这些服务帐户具有很高的特权。

    问问自己这是否值得麻烦。也许警告是可取的,但您无法自己解决问题。这将需要管理员来真正解决问题。专注于从您遇到的异常中获得良好的诊断。

    【讨论】:

      【解决方案2】:

      我可以建议您采用不同(更简单)的方法吗?尝试模拟服务/用户帐户并编写一个快速临时文件,然后将其删除。如果您可以编写该文件(并将其删除),则可以确定 SQL Server 可以执行相同的操作。

      这里有一篇关于冒充 NETWORK SERVICE 帐户的帖子:http://geek.hubkey.com/2008/02/impersonating-built-in-service-account.html

      【讨论】:

        猜你喜欢
        • 2011-05-05
        • 2011-05-09
        • 1970-01-01
        • 2010-11-27
        • 2014-03-27
        • 2011-06-26
        • 2012-05-27
        • 2014-09-07
        • 1970-01-01
        相关资源
        最近更新 更多