我.bat
以管理员身份运行了一个文件。该.bat
文件要求将所有.dll
文件从当前目录复制到该syswow64
目录。例如:
copy *.dll c:\windows\syswow64
不幸的是,以管理员身份运行它会将当前目录设置为c:\windows\system32
而不是文件所在的目录.bat
,因此会导致.dll
中的文件system32
被复制到syswow64
。输出显示了很多.dll
文件名,但也有很多Access Denied.
s。当我注意到它正在复制我打算复制的 7 个文件以外的内容时,我立即终止了批处理。
这对那个站点来说无害吗,还是有问题?有没有办法恢复文件syswow64
夹,还是我不应该这么做?有没有办法判断是否有.dll
文件受到影响?
答案1
不久的将来可能会出现严重问题。
令人困惑的是,该文件夹包含 64 位二进制文件,SysWOW64
其中包含 32 位 DLL,供您运行的 32 位应用程序使用。System32
正在使用或已经存在的 DLL 文件未被替换,但可能有一堆 64 位 DLL 位于仅应加载 32 位二进制文件的文件夹中(非常糟糕)。
重启可能会产生后果。您应sfc /scannow
尽快执行此操作,以尽量减少系统完整性的损失。
答案2
如果它们不是以系统文件命名的,那就没问题,因为没有人会尝试使用它们。如果它们以系统文件命名,很可能它们都会被拒绝访问,因为没有人有权覆盖系统文件,包括管理员。
C:\Users\User>icacls c:\windows\system32\notepad.exe
c:\windows\system32\notepad.exe NT SERVICE\TrustedInstaller:(F)
BUILTIN\Administrators:(RX)
NT AUTHORITY\SYSTEM:(RX)
BUILTIN\Users:(RX)
Successfully processed 1 files; Failed processing 0 files
如您所见,只有 TrustedInstaller(安装/Windows 更新安全伪用户)有覆盖权限。
管理员必须拥有所有权并授予自己权限,然后才能覆盖。