我在 Windows 7 Ent 中运行 Dotnet 3.5 可执行文件,作为域中的 GPO 计算机启动脚本。该脚本驻留在网络共享上。该 exe 作为本地系统运行。exe运行正常。
我想在此 exe 中访问 Web 服务,但似乎本地系统无法访问每个文档的网络资源。但是,如果将相同的 exe 复制到 C 驱动器并在相同帐户和相同条件下从那里运行(即 GPO 启动脚本),则可以访问 Web 服务。
从 C: 驱动器运行而不是从网络共享运行时,本地系统如何访问 Web 服务?有什么办法可以使它从网络共享工作,而无需先复制到本地驱动器?本地系统是否与 SYSTEM 相同且与 NTAuthority\system 相同?
到目前为止,我已经尝试了以下方法以使其工作。这些都不起作用:
- 在代码中模拟域用户。
- 对 .Net 安全配置中的所有区域给予完全信任
- 在 IE 中将网络共享添加到受信任的站点。
- 使用 netbios 名称而不是文件服务器的完全限定名称,即 \server\share,而不是 \server.domain.com\share
我无法解决以下问题:
- 将组策略客户端服务的登录帐户更改为域用户
- 运行 exe 作为登录脚本。它必须是启动脚本。
要重现此问题,我执行以下操作:
- 创建一个带有一些网络功能的简单 exe,即 WebClient.DownloadString(" http://www.google.com ")
- 将 exe 部署到网络共享
- 以普通用户运行以显示没有错误
- 运行 whoami 以显示当前用户
- 运行 psexec -s -i cmd.exe
- Cmd 将以 SYSTEM 启动(本地系统或 NT Authority\System)
- 运行 whoami 以显示当前用户
- 从网络共享运行 exe 以显示它将无法下载页面。
- 将exe复制到C盘。
- 运行exe显示页面已下载。