IIS 7 使用凭据访问网络驱动器

IIS 7 使用凭据访问网络驱动器

我有一台 IIS 7 服务器,上面正在运行一个 PHP 应用程序。此应用程序需要能够连接到需要用户名和密码的网络驱动器。此驱动器在用户登录时连接net use \\server /user:。该用户不是登录用户。我如何连接此驱动器以供应用程序使用?

我尝试将应用程序池更改为我的用户,但仍然被拒绝。我尝试运行批处理文件,其中的 net use 为系统。我尝试使用虚拟目录,但它不喜欢所需的用户名。用户名包含 \ 和 。该用户也不是 Windows 可识别的用户。我无法控制网络驱动器,只能访问它。

答案1

我遇到了类似的问题,我需要访问网络共享,并使用以下步骤解决了它:

1) 在前端服务器和文件服务器上创建具有相同用户名和密码的帐户。确保密码未过期或必须更改。

2) 创建网络共享并授予新帐户读/写权限。我还测试了是否可以使用新帐户从前端服务器进行连接,以验证没有防火墙阻碍。

3)在前端服务器上,我将帐户包含在IIS_IUSRS组中,间接授予其以批处理作业身份登录的权限。

4)运行以下命令为该账户授予权限

aspnet_regiis -ga <your_app_pool_user>

查看更多:如何:为 ASP.NET 2.0 应用程序创建服务帐户 (MSDN)

5)重新启动 WAS 和 IIS,以确保在尝试使用该帐户时对帐户组成员身份的更改生效。

C:> net stop was /y
C:> net start w3svc

6)创建应用程序池并在高级设置中设置身份。

这是我在 Windows Server 2012 上的 IIS 8 上尝试设置身份时遇到错误消息而卡住的部分。

我从 IIS 管理器收到以下错误对话框:“执行此操作时出现错误。详细信息:值不在预期范围内。”

尝试从命令行设置应用程序池标识时收到类似的错误:

C:> appcmd set config /section:applicationPools 
     /[name='test-pool'].processModel.identityType:SpecificUser 
     /[name='test-pool'].processModel.userName:MyAccountName 
     /[name='test-pool'].processModel.password:P@ssw0rd

ERROR ( hresult:80070057, message:Failed to commit configuration changes.
  The parameter is incorrect.
 )

当我删除最后一个参数密码时,该命令将成功更改身份类型并设置用户名,但我从来没有弄清楚为什么我无法设置密码,所以我反驳编辑我的应用程序主机配置文件。不幸的是,密码最终以明文形式出现。

<configuration>
   ...
    <system.applicationHost>
        <applicationPools>
            ...
            <add name="test-pool" managedRuntimeVersion="v4.0">
                <processModel identityType="SpecificUser" 
                  userName="MyAccountName" password="P@ssw0rd" />
            </add>
            ...
        </applicationPools>
        ...
    </system.applicationHost>
    ...
</configuration>

7)最后,我将我的 Web 应用程序设置为使用应用程序池,它可以毫无问题地访问网络共享。

答案2

我将使用备用凭据映射网络驱动器,然后让 PHP 应用程序连接到适当的驱动器号。请记住,如果 Windows 无权访问驱动器,则 PHP 无权访问,因为 PHP 不理解 Windows 身份验证。

相关内容