我所处的环境中,我们的大部分个人资料信息都被重定向到网络共享(例如\\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:\>
解决方案
foo
从“Windows 凭据”和“通用凭据”部分中删除了一个条目解释
看来,在我尝试
runas
或其他尝试将驱动器映射到\\foo\adirectory
(不是 的子目录\\foo\Home\
)的过程中,该凭据与凭据一起存储在foo
“Internet 或网络地址”的Windows 凭据管理器中otheruser
。将凭据存储在凭据管理器中是其他一些操作的副作用——我从未将它们显式添加到凭据管理器中。
但是,该行为似乎与 to的
/savecred
选项一致runas
。所以很可能我曾经尝试过这个选项(尽管我没有明确的记忆/这样做的记录)。因此,任何访问根的任何子路径的尝试
\\foo\
都使用了otheruser
凭据,这解释了奇怪的行为。从“Windows 凭据”部分下的凭据管理器中删除凭据并重新启动解决了该问题。
重新启动后,我看到另一个“通用凭据”也用于
foo
withotheruser
。我也删除了那个。