Тестирование пути в SysWOW64 возвращает true, если путь не существует, но существует в System32

ПРИМЕЧАНИЕ. Я работаю в 64-битной системе.

У меня проблемы с поиском статей, касающихся моей текущей ситуации. Я использую PowerShell, чтобы проверить, существует ли определенный путь:

"C: \ Windows \ SysWOW64 \ Config\systemprofile\Desktop"

и он возвращает true, даже если папка Desktop не существует в SysWOW64. Я знаю, что это связано с тем, что у меня есть путь:

"C: \ Windows \ System32 \ Config\systemprofile\Desktop"

но я не знаю, почему. В контексте, я автоматизирую некоторые вещи в Excel (да, я знаю, что это не поддерживается, но с папками рабочего стола все работает отлично), и я хочу проверить, существуют ли оба пути, прежде чем пытаться продолжить автоматизацию.

У меня вопрос, нужно ли тестировать оба пути? Сработает ли автоматизация Excel, если у меня папка "Рабочий стол" только в одном из путей, потому что они как-то связаны?

Я видел эту и эту статью, и это заставляет меня верить, что да, но как программист, я не решаюсь так тесно связать эти вещи на случай, если они изменятся в будущем. Есть ли более элегантное решение?

1 ответ

Решение

Предполагая, что:

C: \ Windows \ SysWOW64 \ Config\systemprofile\Desktop

существует, но:

C: \ Windows \ System32 \ Config\systemprofile\Desktop

не.

64-битная PowerShell:

Test-Path C:\Windows\SysWOW64\config\systemprofile\Desktop
True

Test-Path C:\Windows\System32\config\systemprofile\Desktop
False

32-битная PowerShell:

Test-Path C:\Windows\SysWOW64\config\systemprofile\Desktop
True

Test-Path C:\Windows\System32\config\systemprofile\Desktop
True

Второй тест в 32-битной PowerShell перенаправлен с system32 в syswow64, Проверяет для syswow64 обычно не перенаправляются.

Вы утверждаете Test-Path C:\Windows\SysWOW64\config\systemprofile\Desktop возвращает true, даже если эта папка не существует. Уверены ли вы?

Кроме того, какова разрядность ваших компонентов Excel, если они 32-битные, вам нужно только позаботиться о пути SysWOW64.

Другие вопросы по тегам