Программа не запускается с сетевого диска
После последнего обновления windows 10 перестала работать с сетью программа. Сама программа написана на Delphi5. Это клиентская программа к базе данных Oracle, которая (база данных) расположена на отдельном сервере. Сама программа запускается с сетевого диска. Сетевой диск - samba на ОС Linux. В момент авторизации в базе данных выдает ошибку " ORA-12560: TNS:protocol adapter error ". Т.е. нет обмена данных с сервером базы данных, не может подключиться к базе данных. Копирование программы (копирование самой программы и используемых библиотек, изменение переменных окружения) на локальный диск C: решил проблему. Как разрешить работу по сети таким программам с новыми обновлениями?
Проблема была замечена на разных компьютерах под управлением windows 10 после получения обновлений.
Было произведено откат обновлений, отключение антивируса, защитника windows. Проблема не была решена.
Эта цепочка заблокирована. Вы можете просмотреть вопрос или оставить свой голос, если сведения окажутся полезными, но вы не можете написать ответ в этой цепочке.
Оскорбление — это любое поведение, которое беспокоит или расстраивает человека или группу лиц. К угрозам относятся любые угрозы самоубийством, насилием, нанесением ущерба и др. Любое содержимое для взрослых или недопустимое на веб-сайте сообщества. Любое изображение, обсуждение наготы или ссылка на подобные материалы. Оскорбительное, грубое или вульгарное поведение и другие проявления неуважения. Любое поведение, нарушающее лицензионные соглашения, в том числе предоставление ключей продуктов или ссылок на пиратское ПО. Незатребованная массовая рассылка или реклама. Любые ссылки или пропаганда сайтов с вирусным, шпионским, вредоносным или фишинговым ПО. Любое другое неуместное содержимое или поведение в соответствии с правилами использования и кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другими вариантами оскорбления или эксплуатации детей.
25.11.2021
itpro
Windows 10, Windows 11, Windows Server 2019
комментариев 8
После вирусного заражения или некорректной модификации реестра, пользователь может столкнуться с тем, что в Windows перестают запускаться исполняемые exe файлы (установочные msi файлы или файлы скриптов powershell/cmd/vbs). При запуске любой программы (ярлыка) из проводника Windows File Explorer просто ничего не происходит, появляется окно с предложением выбрать программу, или все exe файлы открываются в одной программе (например, в notepad.exe или в paint.exe). В этой статье мы рассмотрим, как восстановить запуск exe файлов в Windows.
Восстановление ассоциаций EXE файлов в Windows
Если при запуске любого exe файла в Windows появляется окно с предложением выбрать программу ( How do you want to open this file? ):
Чаще всего такая проблема появляется после вирусного заражения или неудачной попытки оптимизировать реестр Windows. Изначально причина такой проблемы в том, что в реестре Windows сброшены файловые ассоциации для exe файлов. Чтобы восстановить ассоциации для исполняемых exe файлов в Windows, нужно запустить редактор реестра (regedit.exe), но он тоже не открывается, т.к. тоже является exe файлом. Не получается открыть ни cmd.exe, ни PowerShell. Что же делать?
Если на компьютере, не запускаются даже bat и cmd файлы, придется отредактировать реестр вручную в безопасном режиме.
- Загрузите компьютер в безопасном режиме (достаточно три раза подряд прервать загрузку Windows кнопкой питания);
- Компьютер загрузится в среде восстановления Windows Recovery Environment (WinRE). Выберите Troubleshoot -> Advanced options -> Startup Settings -> Restart. Нажмите F4, чтобы загрузить Windows в безопасном режиме;
- Запустите редактор реестра regedit.exe и перейдите в ветку HKEY_CLASSES_ROOT\.exe;
- Измените значение параметра реестра Default на exefile;
- Затем перейдите в ветку HKEY_CLASSES_ROOT\exefile\shell\open\command, измените значение параметра Default на "%1" %*
- Затем по аналогии измените значения параметра Default на "%1" %* в ветках HKCR\exefile\shell\open и HKCR\exefile
- Перезагрузите компьютер в обычном режиме. File Explorer теперь должен использовать стандартные ассоциации для exe файлов. Попробуйте запустить любой exe файл.
Дополнительно стоит выполнить следующие действия для восстановления файловых ассоциаций exe файлов:
- Выполните команду сброса ассоциаций: assoc .exe=exefile
- Проверьте, что в ветке реестра HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.exe отсутствует раздел UserChoice. Если такой раздел есть, удалите его;
- Выполните проверку целостности образа Windows и системных файлов с помощью команд:
sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth - Убедитесь, что ваш антивирус не блокирует запуск исполняемых файлов;
- Если Windows показывает предупреждение безопасности при запуске исполняемых файлов, следуйте инструкциям в этой статье.
Не запускаются исполняемые exe файлы из сетевой папки
Если пользователи могут запускать exe файлы локально на своих компьютерах, но появляется ошибка при запуске файлов из сетевых папок, то причина проблемы может быть другом.
-
Проверьте NTFS разрешения на файл/папку. Если у пользователя нет NTFS права Read/Execute, то при запуске исполняемого файла появится ошибка:
Измените NTFS разрешения вручную или через PowerShell.
Также проблема может быть связана с тем, что вы пытаетесь подключиться к сетевой папке, расположенной на устройстве, которое поддерживает только протокол доступа к файлам SMB v1 (это может быть сетевой NAS, файловый сервер со старой версией ОС, например, Windows XP или Windows Server 2003).
Об этом могут говорить ошибки:
Примечание. Напомним, что при взаимодействии клиента и сервера по протоколу SMB для взаимодействия выбирается максимальная версия протокола, которая одновременно поддерживается и клиентом и сервером (см. статью Версии протокола SMB в Windows). Вы можете определить версию SMB, с помощью которой ваш клиент подключается к файловому серверу с помощью команды PowerShell Get-SmbConnection .
Проверьте, включен ли SMBv2 или SMBv3 на вашем файловом сервере с помощью команды:
Get-SmbServerConfiguration | Select EnableSMB2Protocol
Если SMBv2 отключен, его можно включить:
Set-SmbServerConfiguration -EnableSMB2Protocol $true
Если вы используете файловые сервер Linux с Samba, вы можете отключить на нем поддержку SMB1. Для этого нужно в файле конфигурации smb.conf в секции [global] добавить строку min protocol = SMB2 и перезапустить Samba.
Если в качестве файлового сервера Windows Server 2003 (или сетевое NAS хранилище, которое поддерживает только SMBv1), то не можете использовать такое устройство в качестве файловый сервера. Для доступа к такому хранилищу из современных версий Windows 10 придется включать на компьютерах пользователей клиент доступа SMB 1.0 — SMB 1.0/CIFS Client (что настоятельно не рекомендуется).
Правильное решение в данном случае — перенести этот же исполняемый файлы на Windows Server 2012 R2/2016/2019, на которых отключен протокол SMB 1. В этом случае исполняемые файлы начнут нормально запускаться по сети на Windows 10.
20.04.2021
itpro
Windows 10, Windows Server 2016
комментариев 12
Если вы используете подключенные сетевые диски на рабочих станциях, вероятно вы заметили, что они не доступны в программах, запущенных с правами администратора (в том числе в cmd и PowerShell). Это связано с функционалом User Account Control (UAC). Включенный UAC с настройками по-умолчанию не позволяет получить доступ к подключенным (через net use) сетевым дискам из приложений, запущенных в привилегированном режиме (Run As Administrator). Это означает, что при запуске командной строки или файлового менеджера (того же, Total Commander) с повышенными правами, в них будут не видны буквы дисков смонтированных сетевых папок.
Проблема наблюдается, если выполняются следующие условия
-
В сессию пользователя подключены сетевые диски (через GPO или вручную через net use );
В этом случае сетевые диски отображаются в проводнике Windows и в программах, но недоступны в любых приложениях, запуженные в привелигированном режиме.
В этой заметке мы покажем, как в Windows 10 разрешить доступ к сетевым дискам из приложений, работающих в привилегированном режиме (запущенных от имени администратора). Проблема проявляется как для сетевых дисков, подключенных через групповые политики, так и для папок подключенных пользователей самостоятельно.
Важно. Настоятельно не рекомендуется совсем отключать UAC на компьютере, даже для одного конкретного приложения.
Подключенные сетевые диски не отображаются в приложении
Проверим, что при включенном UAC вы не можете из привилегированного приложения получить доступ к подключенному в обычном режиме сетевому диску.
Например, откроем командную строку с правами пользователя и проверим что мы можем получить доступ к содержимому подключенного сетевого диска Z:\.
Команда вывела содержимое сетевой папки.
Такое поведение системы может вызывать ряд неудобств при частом запуске приложений в привилегированном режиме. Можно запускать приложения без прав администратора, но это не всегда применимо.
Почему это происходит? Данная особенность связана с механизмом работы UAC для пользователя с правами локального администратора. Дело в том, что при входе такого пользователя в систему создаются два маркера доступа: один маркер доступа с отключенными правами администратора (маркер фильтрованного доступа – из-под которого запускаются большинство программ) и маркер полноценного администратора, обладающего полными правами в системе (в этом контексте выполняются все программы, получившие подтверждение на повышение прав в UAC).
Если с помощью команды whoami /all сравнить текущие привилегии одного и того же пользователя в двух сессиях cmd.exe (обычной и привилегированной), можно увидеть, что они сильно отличаются. В следующей таблице перечислены отличия в группах и текущих полномочиях в каждой сессии.
При включенном UAC приложения под одним и тем же пользователем могут запускаться в двух контекстах (привилегированном и непривилегированном). При подключении общих сетевых папок, система создает символические ссылки (DosDevices), в которых хранится сопоставление буквы диска и UNC пути. Эти ссылки ассоциируются с текущим сеансом для текущего маркера доступа процесса и недоступны из-под другого маркера.
Соответственно, может иметь место и обратная проблема: если пользователь обладает правами администратора на своем компьютере, то при подключении сетевых дисков через логон-скрипты групповых политик, задания планировщика или SCCM (которые запускаются с повышенными привилегиями), эти диски не видны пользователю в проводнике Windows (непривилегированный процесс).
В качестве обходного решения можно порекомендовать подключать сетевые диски из командой строки, запущенной с правами администратора (через net use или rundll32 SHELL32.dll,SHHelpShortcuts_RunDLL Connect ). Но это решение не всегда применимо, и не очень удобно.
Enablelinkedconnections: разрешить доступ к сетевым дискам из программ, запущенных с правами администратора
Есть более простое решение. Для его реализации нужно внести следующие изменения в реестр:
Совет. То же самое можно сделать одной командой:
New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name EnableLinkedConnections -Value 1 -PropertyType 'DWord'
В обратную сторону это тоже работает: все сетевые диски, подключенные в контексте привилегированной сессии, будут доступны и в обычной сессии.
Совет. К сожалению, в групповых политиках отсутствует возможность включения параметра EnableLinkedConnections, поэтому для применения этих настроек на компьютеры домена придется распространить параметр реестра через GPP.
Как это работает. После включения параметра реестра EnableLinkedConnections, служба LanmanWorkstation и LSA будут проверять наличие второго маркера доступа, связанного с сессией текущего пользователя. Если такой маркер доступа обнаружен, список подключенных сетевых дисков копируется из одного маркера в другой. Таким образом сетевые диски, подключенные в привилегированном режиме, будут видны в обычном и наоборот.
Совет. В качестве альтернативного решения можно предложить создать символическую ссылку на целевой сетевой каталог. Например, так
mklink /D c:\docs \\msk-fs1\docs
Доступ к данному каталогу будет возможен и в обычном и в привилегированном режиме. Из недостатков метода, отметим, что доступ на общую папку выполняется с полномочиями текущего пользователя. Нельзя, как в случае с net use, использовать учетную запись другого пользователя.
После включения параметра EnableLinkedConnections сетевые диски также станут доступны из заданий планировщика, запущенных из-под текущего пользователя. Если задание запускается от имени LocalSystem или другого пользователя, сетевые диски текущего пользователя, естественно, будут недоступны.
05.05.2021
itpro
PowerShell, Windows 10, Групповые политики
комментариев 15
В последних билдах Windows 10 встречался неприятный баг, из-за которого перестают подключаться сетевые диски после перезагрузки компьютера. После входа в систему пользователь в проводнике Windows видит красный крест на иконках всех подключенных сетевых дисков. Если в командой строке выполнить команду net use, то напротив всех подключенных дисков вы увидите статус Недоступны (Unavailable). Автоматически не переподключаются как сетевые диски, подключенные пользователем, так и диски, подключаемые через GPO.
Впервые эта проблема была обнаружена в Windows 10 1809, но она встречается и в более новых билдах, в том числе в Windows 10 2004.
Windows 10 не восстанавливает подключение к сетевым дискам
Windows 10 по какой-то причине перестает автоматически подключать сетевые диски после перезагрузки компьютера. Сетевые диски отображаются в проводнике, но подключиться к ним нельзя.
При этом в области уведомлений появляется всплывающее окно с текстом:
Проблема возникает как с дисками, подключенных с NAS устройств, так и с сетевыми папками на других компьютерах Windows/Linux. Этот баг впервые появился в Windows 10 1809 и по словам Microsoft исправлен обновлением KB469342 выпущенным 5 декабря 2018 года (addresses an issue that may cause mapped drives to fail to reconnect after starting and logging onto a Windows device). Но проблема встречается и в других билдах Windows 10.
Также Microsoft предлагает обходное решение проблемы с восстановлением подключения к сетевым дискам (см. KB4471218 — Mapped network drive may fail to reconnect in Windows 10). Для этого при входе пользователя в систему предлагается запускать PowerShell скрипт, который должен переподключить все недоступные сетевые диски. Если сетевые диски подключаются через групповые политики, нужно изменить настройки GPO.
PowerShell скрипт для автоматического переподключения сетевых дисков
Рассмотрим, как использовать PowerShell скрипт для автоматического переподключения сетевых дисков при входе пользователя в Windows.
Откройте блокнот (notepad.exe), скопируйте в него следующий PowerShell код и сохраните файл в каталог C:\PS с именем MapDrives.ps1:
$i=3
while($True)$error.clear()
$MappedDrives = Get-SmbMapping |where -property Status -Value Unavailable -EQ | select LocalPath,RemotePath
foreach( $MappedDrive in $MappedDrives)
try New-SmbMapping -LocalPath $MappedDrive.LocalPath -RemotePath $MappedDrive.RemotePath -Persistent $True
> catch Write-Host "Ошибка подключения сетевого каталога $MappedDrive.RemotePath в диск $MappedDrive.LocalPath"
>
>
$i = $i - 1
if($error.Count -eq 0 -Or $i -eq 0)
Start-Sleep -Seconds 30
>
Данный скрипт выбирает все недоступные сетевые диски и пытается их переподключить в постоянном режиме (ключ Persistent).
Создайте еще один файл сценария MapDrives.cmd с кодом:
PowerShell -Command "Set-ExecutionPolicy -Scope CurrentUser Unrestricted" >> "%TEMP%\StartupLog.txt" 2>&1
PowerShell -File "%SystemDrive%\PS\MapDrives.ps1" >> "%TEMP%\StartupLog.txt" 2>&1
Данный код позволяет корректно вызвать PowerShell скрипт, описанный выше.
Вы можете поместить файл в автозагрузку пользователя, скопировав файл MapDrives.cmd в каталог %ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp.
Также вы можете создать задание планировщика, которое дожно запускать файл MapDrives.cmd при входе пользователя в систему. Вы можете создать задание планировщика с помощью PowerShell или из графического интерфейса консоли планировщика Windows (Taskschd.msc).
Создайте новое задание, укажите его имя, выберите что задание должно запускаться от имени встроенной группы Пользователи (Builtin\Users).
На вкладке Триггеры выберите, что задание должно выполняться при входе в систему любого пользователя (At logon -> Any user).
На вкладке действие в поле Программа укажите путь к файлу MapDrives.cmd.
На вкладке Условие можно включить опцию Сеть -> Запускать только при подключении к следующей сети -> Любое подключение.
Перезайдите в систему или выполните перезагрузку компьютера. При входе пользователя должен запуститься PowerShell скрипт, которые пересоздаст все подключения к сетевым дискам.
Подключение сетевых дисков через GPO
Если вы подключаете сетевые диски пользователям с помощью доменной GPO, то для корректного переподключения дисков нужно изменить настройки политики.
Откройте политику, подключающую диски, и в разделе User Settings -> Preferences -> Windows Settings -> Drive maps найдите вашу политику (политики) назначения сетевых дисков и измените тип действия с Update на Replace.
После обновления параметров групповых политик на клиентах при входе пользователя в систему, сетевые диски будут удалены и назначены снова.
Не подключаются сетевые диски в Windows 10 2004
Проблема с подключением сетевых дисков также наблюдается в билде Windows 10 2004. Проблема возникает с сетевыми дисками, подключенных с legacy устройств с поддержкой только протокола SMBv1 (Windows XP/2003, старые NAS устройства).
Для решения этой проблемы нужно прописать в реестре пользователя для каждого подключенного сетевого диска параметр ProviderFlags =1.
Например, если у пользователя в сессии подключен сетевой диск U:, перейдите в раздел реестра HKEY_CURRENT_USER\Network\U. Создайте параметр типа DWORD с именем ProviderFlags и значением 1.
Или выполните команду:
REG ADD "HKCU\Network\U" /v "ProviderFlags" /t REG_DWORD /d "1" /f
Настроить задержку подключения сетевых дисков в Windows через GPO
Windows может пытаться переподключить сетевые диски при входе пользователя до полноценной инициализации сетевого интерфейса. Чтобы предотвратить подключение сетевых дисков до полного включения сети, вы можете включить специальный параметр групповой политики.
Вы можете настроить этот параметр через редактор локальной групповой политики ( gpedit.msc ) или из редактора доменных GPO ( gpmc.msc ). Перейдите в раздел Computer Configuration -> Administrative Templates -> System -> Logon и включите политику Always wait for the network at computer startup and logon (Всегда ожидать инициализации сети при загрузке и входе в систему).
Также эту проблему можно решить, если просто подождать 15 секунд после загрузки компьютера (или выхода его из режима гибернации/спящего режима), прежде чем логиниться. Этого времени будет достаточно, чтобы Windows инициализировала сеть.
Отключить уведомление “Не удалось восстановить подключение ко всем сетевым дискам”
Если ваш компьютер находится не в сети предприятия (сетевые диски не доступны по определению), и вам мешает назойливое уведомление “Не удалось восстановить подключение ко всем сетевым дискам” при каждой загрузке Windows, вы можете его отключить.
Для этого в ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider нужно создать параметр типа DWORD с именем RestoreConnection и значением 0.
В апрельском обновление Windows 10 1803 разработчики представили целый набор улучшений, в том числе в области безопасности, но как оказалось, некоторые новые настройки у ряда пользователей вызывают определенные проблемы. Так, многие уже успели отметить, что в Windows 10 1803 не запускаются расположенные в сетевых папках исполняемые файлы. Те же сетевые приложения, которые запускаются без видимых ошибок, работают не совсем корректно, в частности, не обеспечивают нормальное сетевое соединение с другими серверами.
В Windows 10 1709 такой проблемы не наблюдалось, сетевое ПО работало нормально. Довольно скоро решение было найдено, оно вполне рабочее, хотя и не совсем правильное. Сетевые программы будут запускаться и нормально работать, если в свойствах их исполняемых файлов включить режим совместимости с Windows 8 .
Чтобы найти правильное решение, нужно знать причину такого поведения Windows 10 1803 . Оказывается, что во всех случаях сетевым каталогом служили устройства с поддержкой протокола SMB v1 , например, на клиентской машине с Windows 10 у вас включен компонент SMB 1.0/CIFS Client .
Причина проста — в Windows 10 1803 система безопасности блокирует работу запущенных из сетевых каталогов приложений, если при этом используется только протокол SMB 1.0 . Чтобы программы корректно работали, выполняющие роль сетевых папок устройства должны использовать протоколы SMB 2.0 или SMB 3.0 . Вы можете проверить, включен ли один из этих протоколов на вашем компьютере или нет, выполнив в запущенной от имени администратора консоли PowerShell такую команду:
Если значением EnableSMB2Protocol будет false , значит протокол SMB второй версии отключен.
Включаем его командой Set-SmbServerConfiguration -EnableSMB2Protocol $true .
Это должно решить проблему с запуском исполняемых файлов из сетевых расположений в Windows 1803 .
Читайте также: