我所处的环境中,我们的许多个人资料信息被重定向到网络共享(例如\\foo\Home\myuser
)
最近,我尝试以 身份访问网络共享otheruser
,但第二天重新启动并登录后,我无法访问我自己的myuser
网络共享(因此我的正常桌面不会显示,Visual Studio iisexpress 不会启动等)。
runas
我使用时执行的唯一命令otheruser
是目录列表命令(在不同时间使用各种/profile
、/noprofile
、/env
选项),所以我无法想象这会如何破坏我的默认配置文件,然而,尽管我无法访问\\foo\Home\myuser
,但我能访问\\foo\Home\otheruser
没有错误(目录列表为空)。
/noprofile
如果我现在以(例如)的身份运行runas /noprofile /user:mydomain\myuser powershell
,情况就会相反 - 我能访问\\foo\Home\myuser
但无法访问\\foo\Home\otheruser
。
我还注意到,访问的错误消息\\foo\Home\myuser
不是An unexpected network error occurred
简单的“访问被拒绝”错误。但是,访问adifferentuser
有时会出现一个错误,有时会出现另一个错误,所以我不确定这是否相关。
因此,似乎我的用户配置文件中的某些内容不知何故被损坏/交换了。我不知道下一步该怎么做——otheruser
在注册表中进行文本搜索后,我没有找到任何有用的信息。
Powershell 记录如下:
#############################################################
# Under "normal" powershell window launched from start menu #
# (logged in as mydomain\myuser) #
#############################################################
PS C:\> whoami
mydomain\myuser
PS C:\>
PS C:\> dir \\foo\Home\myuser\
dir : An unexpected network error occurred.
At line:1 char:1
+ dir \\foo\Home\myuser\
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ReadError: (\\foo\Home\myuser\:String) [Get-ChildItem], IOException
+ FullyQualifiedErrorId : DirIOError,Microsoft.PowerShell.Commands.GetChildItemCommand
PS C:\> dir \\foo\Home\otheruser
PS C:\>
PS C:\> dir \\foo\Home\adifferentuser\
dir : Access to the path '\\foo\Home\adifferentuser\` is denied.
At line:1 char:1
+ dir \\foo\Home\adifferentuser
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (\\foo\Home\adifferentuser\:String) [Get-ChildItem], UnauthorizedAccessException
+ FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand
PS C:\> runas /noprofile /user:mydomain\myuser powershell
Enter the password for mydomain\myuser
Attempting to start powershell as user "mydomain\myuser"
PS C:\>
##########################################################################
# Under new powershell window running as mydomain\myuser with /noprofile #
##########################################################################
PS C:\> whoami
mydomain\myuser
PS C:\>
PS C:\> dir \\foo\Home\myuser
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 7/12/2022 7:07 AM SomeDir
d-r--- 10/5/2022 5:38 PM Documents
PS C:\> dir \\foo\Home\otheruser
dir : An unexpected network error occurred
At line:1 char:1
+ dir \\foo\Home\otheruser
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ReadError: (\\foo\Home\otheruser\:String) [Get-ChildItem], IOException
+ FullyQualifiedErrorId : DirIOError,Microsoft.PowerShell.Commands.GetChildItemCommand
PS C:\> dir \\foo\Home\adifferentuser
dir : A unexpected network error occurred.
At line:1 char:1
+ dir \\foo\Home\adifferentuser
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ReadError: (\\foo\Home\adifferentuser\:String) [Get-ChildItem], IOException
+ FullyQualifiedErrorId : DirIOError,Microsoft.Powershell.Commands.GetChildItemCommand
PS C:\>
答案1
解决方案
- 从开始菜单启动“凭证管理器”
- 单击“Windows 凭据”
- 这将分为三个部分:
- Windows 凭据
- 基于证书的凭证
- 通用凭证
- 这将分为三个部分:
- 删除所有存储的、与导致困难的路径相关的凭证。检查所有 3 个部分。
- 就我而言,我
foo
从“Windows 凭据”和“通用凭据”部分中删除了一个条目
- 就我而言,我
解释
看来,在我尝试runas
或其他尝试映射驱动器\\foo\adirectory
(而不是的子目录\\foo\Home\
)的过程中,凭据已与凭据一起存储在foo
“Internet 或网络地址”的 Windows 凭据管理器中otheruser
。
将凭证存储在凭证管理器中是其他操作的副作用 - 我从未将它们明确添加到凭证管理器中。
然而,这种行为看起来一致可以/savecred
选择runas
。所以很可能我曾经尝试过这个选项(虽然我没有明确的记忆/记录这样做过)。
因此任何试图访问任何根的子路径\\foo\
正在使用otheruser
凭证,这解释了奇怪的行为。
从“Windows 凭据”部分下的凭据管理器中删除凭据并重新启动即可解决问题。
重启后,我看到另一个“通用凭据”也适用foo
于otheruser
。我也将其删除了。