Назад | Перейти на главную страницу

как легко переподключиться к «недоступным» сетевым ресурсам

Время от времени я запускаю cmd от имени администратора. Я для удобства настроил ярлык ...

C:\Windows\System32\runas.exe /u:admin.user@domain cmd 

В какой-то момент мне захотелось запустить сценарии, указывающие на подключенные диски, доступные моему обычному пользователю.

C:\Windows\system32>net use
Status       Local     Remote                    Network

-------------------------------------------------------------------------------
Unavailable  L:        \\fileserver\shared\path
                                                Microsoft Windows Network
Unavailable  X:        \\fileserver\shared\temp         Microsoft Windows Network
The command completed successfully.

Я особенно заинтересован в получении моего L: drive на карту. Думаю, что-то вроде этого должно работать ...

C:\Windows\system32>net use l:
Local name        l:
Remote name       \\fileserver\shared\path
Resource type     Disk
The command completed successfully.

C:\Windows\system32>l:
The system cannot find the drive specified.

Если я перенастрою диск, все будет хорошо, но это утомительно (в реальности «путь» намного длиннее).

C:\Windows\system32>net use l: \\fileserver\shared\path
The command completed successfully.

C:\Windows\system32>l:

L:\>

Как описано в эта статья Technet это побочный эффект UAC. Этого можно избежать, добавив запись в раздел реестра. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System с именем EnableLinkedConnections, тип DWORD и ценность 1. Это сделает сетевые подключения, созданные под обычными учетными данными, доступными для процессов, запускаемых с повышенными привилегиями через RunAs.

Проблема: После запуска Windows доступ к e. грамм. диск n:
Чтобы решить эту проблему, я написал командный файл, который просто активирует соединение.

Решение:

C: \> n:
Система не может найти указанный диск

C: \> ActivateMappedNetworkDrive.bat n:

C: \> n:

N: \>

ActivateMappedNetworkDrive.bat

@echo off
REM Problem: Mapped network drives are not "connected" after restart of windows
REM          If you open the windows explorer and click on such a network drive it works.
REM          But if you first try to access it by any script/program it won't work.
REM Solution: Open the desired network drive in a minimized explorer instance and close it shortly afterwards
REM Michael Hutter / August 2019

if "%1"=="" (
  echo Syntax: %0 DriveToConnect:
  echo Example: %0 n:
  goto End
)
set PROCESSNAME=explorer.exe
set PREFIX=start /min
set SUFFIX=%1

::First save current pids with the wanted process name
setlocal EnableExtensions EnableDelayedExpansion
set "RETPIDS="
set "OLDPIDS=p"
for /f "TOKENS=1" %%a in ('wmic PROCESS where "Name='%PROCESSNAME%'" get ProcessID ^| findstr [0-9]') do (set "OLDPIDS=!OLDPIDS!%%ap")

::Spawn new process(es)
%PREFIX% %PROCESSNAME% %SUFFIX%

::Wait for a second (may be optional)
choice /c x /d x /t 1 > nul

::Check and find processes missing in the old pid list
for /f "TOKENS=1" %%a in ('wmic PROCESS where "Name='%PROCESSNAME%'" get ProcessID ^| findstr [0-9]') do (
if "!OLDPIDS:p%%ap=zz!"=="%OLDPIDS%" (set "RETPIDS=/PID %%a !RETPIDS!")
)

::Kill the new threads (but no other)
taskkill %RETPIDS% /T > NUL 2>&1
endlocal

:End

Попробуй это:

for /f "TOKENS=3,4" %a in ('net use') do net use %a %b

C: \> n:
Система не может найти указанный диск

C: \> for / f "TOKENS = 3,4"% a in ('net use') do net use% a% b
... [Игнорировать вывод] ...

C: \> n:

N: \>

Проблема возникает из-за того, как учетные записи администратора работают в Vista и Windows 7. Когда вы входите в систему с учетной записью администратора, учетная запись получает два токена, токен стандартного пользователя и токен администратора. При первоначальном подключении диска использовался токен стандартного пользователя. В командной строке с повышенными привилегиями используется токен администратора. Подключенный диск находится вне контекста токена администратора. Надеюсь, это имело смысл. Лучшее решение - использовать пути к дискам UNC или переназначить диск в командной строке с повышенными привилегиями. Вот еще одно решение. Обратите внимание, что это не рекомендуется. В Windows 7 не тестировал. Статья про Vista.

http://support.microsoft.com/kb/937624

Общее решение состоит в том, чтобы просто подождать Windows для сети - это замедлит загрузку на некоторое время, но предотвратит отключение сетевых дисков (в 99% случаев).

Этот параметр политики (GPO) находится в папке Computer Configuration \ Administrative Templates \ System \ Logon \ Всегда ждать сети при запуске компьютера и входе в систему.

С учетом этого, если вы уже запускаете пакетный файл, открытие проводника увеличивает накладные расходы, так как просто отключите и подключите диск.

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