Почему я получаю разные результаты в Win-7 и Win-10 при выполнении команд 'dir', 'where' и 'for' через приложение vb.net? - PullRequest
0 голосов
/ 23 апреля 2019

Я создаю приложение для Windows в vb.net (vb 2010). Одна часть приложения отображает существующие хранители экрана и предоставляет пользователю настройки хранителя экрана, такие как: хранитель экрана, время ожидания, пароль и т. Д. При нажатии на кнопку существующие хранители экрана находятся в папке «c: \ windows \ system32». отображаются в списке. (Приложение работает с правами администратора)

Приложение показывает разные результаты (заставки) при запуске в Win-7 и Win-10, хотя код один и тот же.

Чтобы просмотреть список существующих заставок, я использую эту команду:

dir c:\windows\system32\*scr /b

Выходные данные затем отображаются в списке.

Когда приложение запускается в Windows-7, вывод будет:

Bubbles.scr
Mystify.scr
PhotoScreensaver.scr
Ribbons.scr
scrnsave.scr
ssText3d.scr

Однако, когда то же самое выполняется в Windows-10, вывод будет:

PhotoScreensaver.scr
scrnsave.scr

Удивительно, но когда я запускаю команду (dir, где & for) из командной строки cmd на Win-7 и 10, я получаю одинаковый результат.

Bubbles.scr
Mystify.scr
PhotoScreensaver.scr
Ribbons.scr
scrnsave.scr
ssText3d.scr

Также я использую код vb.net:

Dim oProcess As New Process()        
Dim oStartInfo As New ProcessStartInfo("cmd.exe", " /c dir c:\windows\system32\*scr /b")
oStartInfo.UseShellExecute = False
oStartInfo.RedirectStandardOutput = True
oProcess.StartInfo = oStartInfo
oProcess.Start()

ListBox1.Items.AddRange(oProcess.StandardOutput.ReadToEnd.Split(New String() {Environment.NewLine}, StringSplitOptions.None))

Я также попробовал эти команды:

Win-7:

where "c:\windows\system32\:*scr"

Output:

c:\Windows\System32\Bubbles.scr
c:\Windows\System32\Mystify.scr
c:\Windows\System32\PhotoScreensaver.scr
c:\Windows\System32\Ribbons.scr
c:\Windows\System32\scrnsave.scr
c:\Windows\System32\ssText3d.scr

Win-10:

where "c:\windows\system32\:*scr"

Output:

c:\Windows\System32\PhotoScreensaver.scr
c:\Windows\System32\scrnsave.scr


Win-7:

for /f "skip=5 tokens=1,2,3,4,5 delims= " %i in ('dir c:\windows\system32\*.scr ^| FINDSTR /R /I /V "bytes"') do @echo %m

Output:

Bubbles.scr
Mystify.scr
PhotoScreensaver.scr
Ribbons.scr
scrnsave.scr
ssText3d.scr


Win-10:

for /f "skip=5 tokens=1,2,3,4,5 delims= " %i in ('dir c:\windows\system32\*.scr ^| FINDSTR /R /I /V "bytes"') do @echo %m

Output:

PhotoScreensaver.scr
scrnsave.scr

Ожидается вывод приложения при запуске в Win-7 и Win-10 в виде:

Bubbles.scr
Mystify.scr
PhotoScreensaver.scr
Ribbons.scr
scrnsave.scr
ssText3d.scr

Спасибо

...