Список общих папок windows

  1. Step 1 Щелкните правой кнопкой мыши по меню «Пуск» icon.

    Оно находится в нижнем левом углу.

  2. Step 2 Нажмите Проводник.

  3. Step 3 Прокрутите вниз содержимое левой панели и нажмите Сеть.

    Отобразится список компьютеров, которые подключены к сети.

  4. Step 4 Дважды щелкните по...

    Дважды щелкните по компьютеру, на котором хотите просмотреть общие папки. Отобразится список общих папок на выбранном компьютере.

    Реклама

  1. Step 1 Нажмите ⊞ Win+S.

    Откроется панель поиска Windows.

  2. Step 2 Введите управление компьютером.

    Появится список результатов поиска.

  3. Step 3 Нажмите Управление компьютером.

  4. Step 4 Дважды щелкните по Общие папки.

    Вы найдете эту опцию в левом столбце.[1]
    Откроется список подпапок.

  5. Step 5 Нажмите Общие ресурсы.

    Отобразится список общих папок.

    Реклама

  1. Step 1 Щелкните правой кнопкой мыши по меню «Пуск» icon.

    Оно находится в нижнем левом углу.

  2. Step 2 Нажмите Командная строка.

    Откроется окно командной строки.

  3. Step 3 Введите net share.

    Для этого щелкните внутри окна командной строки, а затем введите указанную команду.[2]

  4. Step 4 Нажмите ↵ Enter.

    Отобразится список общих папок.

    Реклама

Об этой статье

Эту страницу просматривали 1523 раза.

Была ли эта статья полезной?

 
In all the editions of Windows, it is very simple to share files and folders, however, things can be risky if you don’t know exactly what are the files and folders that you are sharing to your network from your computer. If the permissions of the folders are not set properly, the users connected to the same network as you are could weaken the security of your shared folders. And hence, it is very important for you to know exactly what folders are exactly shared by you on the network. We will present you a few ways through which you can View All Shared Folders in Network Windows 10 and manage their security.

How to View All Shared Folders in Network Windows 10

First Way: Using File Explorer

The easiest procedure to View All Shared Folders in Network Windows 10, is from the File Explorer. So you need to launch your File Explorer on your screen. Then in the navigation pane go to the Network and after that choose your computer’s name. Now, you will view the list will all the shared folders of your computer with the network.

But there is a small loophole here. You will not be able to see the hidden shares and also, it doesn’t provide you sufficient information about the way how all the folders are shared. To retrieve the detailed information you can perform right click and choose its Properties. On the Properties window of the selected folder, you can see extra information about how the particular selected folder is shared. Though it works but it is not the best one that the advanced users want to see. Nothing to worry, you have other ways to see the detailed information.

Alternatively, you can click on the Home menu and then on the Ribbon Bar hit the Properties button. This also brings the Properties window of the selected folder.

Second Way: Using Computer Management

Another method is viewing it from the Computer Management. We have talked about Computer Management recently and there are a couple of ways to access it. You can see the entire article on the following link:

So after arriving in the Computer Management window, navigate System Tools / Shared Folders / Shares which is in the left column of the Computer Management. So when you click the Shares in the left column, the center area will display you the list of shared folders and partitions on your computer. Now, here is the place where you will View All Shared Folders in Network Windows 10 and also the default shares of folders of Windows. The default shares are like C$ and D$.

You can also view the default administration shares of Windows here, ADMIN$.

The official share name of each of the shared partition and folder along with the original folder path, then the sort of the share, the various connections performed by the network to the shared folder with a brief description (if there are any present) are all can be viewed here.

To control the different parameters of the shared folder, double hit on the folder and from the arrived Properties window, you can modify the settings.

Coming to the left column of the Computer Management, click on the Session which is just after the Shares. Then on the central area of the Computer Management window shows the list of those users who are connected to the network shares at present.

When you choose the Open Files link, you will see all the files and folders that users are currently using.

Third Way: Using Windows 10 Command Prompt

You can also view the list of shared folder on the network using the Command Prompt. Launch Command Prompt on your screen and type net share. On the Command Prompt window, you will see a list of shared folders on your computer.

The End

With the three easy procedures, you can View All Shared Folders in Network Windows 10 computers. If you wish to see the basic details of the shared folders you can view them using the File Explorer. But to go to the detailed information about the shared folders of your network you can access them from the Computer Management. If you face any problem we will try to resolve it for you. Please use the comments section for the same.

Расшаренные папки (или папки с общим доступом) – это удобный инструмент для обмена файлами внутри локальной сети. Такие общие ресурсы используются как на предприятиях, так и в домашних сетях. Например, вы можете открыть общий доступ к папке на настольном компьютере и получить к ней доступ со своего ноутбука или мультимедийной приставки.

Но, при активном использовании расшаренных папок бывает сложно вспомнить, к чему был открыт общий доступ и где это находятся на компьютере. В данной небольшой статье мы рассмотрим именно этот вопрос и расскажем, как быстро найти все расшаренные папки на компьютере с Windows 10 или Windows 7.

Содержание

Просмотр расшаренных папок в окне «Мой компьютер»

Если вы хотите узнать, какие папки расшарены на вашем компьютере, то вы можете просто получить доступ к своему собственному компьютеру по сети, использовав имя компьютера «localhost» или IP-адрес «127.0.0.1».

Для этого откройте окно «Мой компьютер» и введите в адресную строку одну из следующих команд:

\\localhost

\\127.0.0.1

На скриншоте внизу показано, куда нужно вводить команду.

вводим адрес локального компьютера

После ввода данного адреса нажмите на клавишу Enter и перед вами появится список всех папок с общим доступом на этом компьютере. В нашем случае это папки FOTO, INFO и Users.

просмотр расшаренных папок

Прямо отсюда можно отключить общий доступ для любой из папок. Для этого нужно кликнуть правой кнопкой мышки по папке, открыть «Свойства», перейти на вкладку «Доступ» и нажать на кнопку «Расширенная настройка». В результате появится небольшое окно с настройками общего доступа.

отключение общего доступа


Просмотр расшаренных папок в командной строке

Кроме этого, вы можете посмотреть список общих папок на локальном компьютере с помощью командной строки.

папки с общим доступом в командной строке

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

net share

net view \\localhost

net view \\127.0.0.1

Просмотр расшареных папок через «Управление компьютером»

Также вы можете найти все расшаренные папки через инструмент «Управление компьютером». Для этого нужно нажать комбинацию клавиш Win-R и ввести команду «compmgmt.msc» либо ввести фразу «Управление компьютером» в поиск в меню «Пуск».

открываем Управление компьютером

В окне «Управление компьютером» нужно открыть раздел «Служебные программы – Общие папки – Общие ресурсы». Здесь будет отображаться список всех папок, к которым открыт общий доступ на вашем компьютере.

общие папки в Управлении компьютером

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

Посмотрите также:

  • Как расшарить папку в Windows 7
  • Схема обжима витой пары
  • Как узнать какая сетевая карта стоит на компьютере
  • Как узнать MAC адрес компьютера на Windows 10
  • Как подключить сетевой диск в Windows 10

Автор
Александр Степушин

Создатель сайта comp-security.net, автор более 2000 статей о ремонте компьютеров, работе с программами, настройке операционных систем.

Остались вопросы?

Задайте вопрос в комментариях под статьей или на странице
«Задать вопрос»
и вы обязательно получите ответ.

Поиск открытых сетевых ресурсов и их права доступа

Уровень сложностиСредний

Время на прочтение16 мин

Количество просмотров5.2K

Общие сетевые ресурсы в домене Active Directory используются для упрощения и централизации доступа к файлам, папкам, принтерам и другим ресурсам в корпоративной сети. Это может привести к нарушению одной из основ информационной безопасности – конфиденциальности

Специалистам по информационной безопасности необходимо выполнять сканирование общих сетевых папок в домене по данным причинам:

  • Обнаружение и мониторинг угроз

    Сканирование папок позволяет выявлять несанкционированный доступ к данным и файлам. Это помогает рано обнаруживать потенциальные угрозы безопасности и предотвращать утечку чувствительных информационных ресурсов.

  • Контроль доступа

    Сканирование может помочь определить, кто имеет доступ к данным и файлам. Это позволяет специалистам по информационной безопасности убедиться, что только сотрудники с соответствующими правами имеют доступ к конфиденциальной информации.

  • Соблюдение нормативов

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

  • Аудит безопасности

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

  • Аудит безопасности

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

Текущие продукты по поиску открытых сетевых ресурсов

На просторах сети есть подобные программы, которые обладают куда большим функционалом, чем я планирую описать.

Как пример программа «SoftPerfect Network Scanner»

Окно программы "SoftPerfect Network Scanner"

Окно программы «SoftPerfect Network Scanner»

Или такая программа как «advanced ip scanner»

Окно программы "advanced ip scanner"

Окно программы «advanced ip scanner»

Данные программы позволяют сканировать подсети внутри компании и выдавать информацию по поводу открытых сетевых папок, и даже какие файлы там содержатся.
Также можно воспользоваться встроенными средствами Windows для поиска и просмотра открытых сетевых ресурсов на том же файловом сервере. И напрашивается вопрос — а зачем что-то изобретать по новому?

Ответ — не знаю, просто захотелось попробовать что-то свое сделать.

Описание работы программы

Изначально я попробовал сделать все только на PowerShell, сделать скрипт, затем батник, но решил, что это как-то просто.

Скрипт выглядит следующим образом:

# Установка английского языка для корректной работы
$prevCulture = [System.Threading.Thread]::CurrentThread.CurrentCulture
[System.Threading.Thread]::CurrentThread.CurrentThread.CurrentCulture = 'en-US'

# Получаем IP машины
$ipAddress = (Test-Connection -ComputerName $env:COMPUTERNAME -Count 1).IPV4Address.IPAddressToString

# Получаем имя компьютера
$computerName = $env:COMPUTERNAME

# Генерируем рандомное число
$randomNumber = Get-Random -Minimum 1 -Maximum 10000

# Создадим локальный файл  в Temp
$localFolderPath = "C:\\Temp"
$fileName = "$($randomNumber)_$($ipAddress)_$($computerName)_$(Get-Date -Format 'yyyy-MM-dd_HH-mm-ss').txt"
$localFilePath = "$localFolderPath\$fileName"

# Отладочная информация
Write-Host "File will be created at $localFilePath"

# Функция для получения прав доступа и замена на читабельные данные
function Get-AccessRights {
    param($path)
    $accessRights = & icacls $path | Out-String
    $accessRights = $accessRights -replace '\(OI\)', '/Owner'  # Owner object
    $accessRights = $accessRights -replace '\(CI\)', '/Container'  # Container
    $accessRights = $accessRights -replace '\(F\)', '/Full access'  # Full access
    accessRights = $accessRights -replace '\(RX\)', '/Read and execute'  # Read and execute
    return $accessRights
}

# Получаем список общих сетевых папок на текущем компьютере
$networkFolders = Get-WmiObject -Class Win32_Share | Where-Object { $_.Path -ne $null -and $_.Type -eq 0 }

# Если есть открытые сетевые папки, записываем информацию в файл
if ($networkFolders) {
    $outputData = @()
    $outputData += "$ipAddress \ $computerName \ `"Number of open folders:`" $($networkFolders.Count)"
    $outputData += "Path to folders:"

    foreach ($folder in $networkFolders) {
        folderPath = $folder.Path
        $outputData += "$folderPath"

        # Получаем информацию о правах доступа и сам процесс для записи в файл
        $accessRights = Get-AccessRights -path $folderPath
        $outputData += $accessRights
    }

    $outputData | Out-File -FilePath $localFilePath -Encoding UTF8
} else {
    # Если открытых сетевых папок нет, выводим сообщение об этом
    IP Address: $ipAddress `nComputer Name: $computerName `nNetwork folders not found." | Out-File -FilePath $localFilePath -Encoding UTF8
}

# Выводим сообщение об успешном выполнении задачи
Write-Host "Information gathered and saved to $localFilePath."

# Восстановить предыдущую настройку кодировки
[System.Threading.Thread]::CurrentThread.CurrentCulture = $prevCulture

Данный скрипт создает в папке C:\Temp файл с результатами и присваивает ему случайно сгенерированный номер, для дальнейшего поиска.

Для локального запуска можно заменить строку на какой-нибудь другой путь:

# Создадим локальный файл  в Temp
$localFolderPath = "C:\\Temp"

Но стоит вопрос централизованной проверки. То есть с одного компьютера или сервера можно сразу запустить на всех устройствах данный скрипт.
Поэтому я решил написать программу на Python для непосредственного использования на компьютера ( и все усложнить в 1000 раз)

import subprocess
import os
import datetime
import shutil
import re
import tkinter as tk
from tkinter import messagebox, scrolledtext

# Функция для обновления лога в текстовом окне
def log_message(log_window, message):
    log_window.insert(tk.END, message + '\n')
    log_window.see(tk.END)
    log_window.update_idletasks()

# Функция для отображения окна с сообщением об ошибке
def show_error_message(error_message):
    messagebox.showerror("Error", error_message)

# Функция для отображения окна с успешным сообщением
def show_success_message(file_path, file_name):
    messagebox.showinfo("Success", f"File created successfully!\n\nFile name: {file_name}\nNetwork path: {file_path}")

# Основной код программы
def main_program(log_window):
    try:
        # Путь к сетевой папке и учетные данные (замените на реальные данные в рабочей среде)
        network_folder_path = r'\\путь\'  # Замените на реальный сетевой путь
        username = 'логин'  # Замените на реальное имя пользователя домена
        password = 'пароль'  # Замените на реальный пароль

        # Логирование подключения к сетевой папке
        log_message(log_window, "Attempting to disconnect old network connection...")
        disconnect_command = f"net use {network_folder_path} /delete"
        subprocess.run(disconnect_command, shell=True)

        log_message(log_window, "Attempting to connect to network folder...")
        net_use_command = f"net use {network_folder_path} /user:{username} {password}"
        result = subprocess.run(net_use_command, shell=True, capture_output=True, text=True, encoding='cp866')

        if result.returncode == 0:
            log_message(log_window, f"Successfully connected to the network folder: {network_folder_path}")
        else:
            error_message = result.stderr
            raise Exception(f"Error connecting to the network folder: {error_message}")

        # Генерация текущей даты и времени для именования файлов
        current_datetime = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')

        # Путь к временному скрипту PowerShell (используем C:\Temp для избежания ошибок доступа)
        temp_dir = "C:\\Temp"
        if not os.path.exists(temp_dir):
            os.makedirs(temp_dir)
        ps_script_path = os.path.join(temp_dir, 'temp_script.ps1')

        # Логирование создания скрипта
        log_message(log_window, "Creating PowerShell script...")

        # Содержимое скрипта PowerShell для сбора данных
        ps_script_content = r'''
        # Установка культуры на английский для корректной работы
        $prevCulture = [System.Threading.Thread]::CurrentThread.CurrentCulture
        [System.Threading.Thread]::CurrentThread.CurrentThread.CurrentCulture = 'en-US'

        # получаем IP машины
        $ipAddress = (Test-Connection -ComputerName $env:COMPUTERNAME -Count 1).IPV4Address.IPAddressToString

        # получаем имя компьютера
        $computerName = $env:COMPUTERNAME

        # генерируем рандомное число
        $randomNumber = Get-Random -Minimum 1 -Maximum 10000

        # Создадим локальный файл  в Temp
        $localFolderPath = "C:\\Temp"
        $fileName = "$($randomNumber)_$($ipAddress)_$($computerName)_$(Get-Date -Format 'yyyy-MM-dd_HH-mm-ss').txt"
        $localFilePath = "$localFolderPath\$fileName"

        # Отладочная информация
        Write-Host "File will be created at $localFilePath"

        # функция для получения прав доступа и замена на читабельные данные
        function Get-AccessRights {
            param($path)
            $accessRights = & icacls $path | Out-String
            $accessRights = $accessRights -replace '\(OI\)', '/Owner'  # Owner object
            $accessRights = $accessRights -replace '\(CI\)', '/Container'  # Container
            $accessRights = $accessRights -replace '\(F\)', '/Full access'  # Full access
            $accessRights = $accessRights -replace '\(RX\)', '/Read and execute'  # Read and execute
            return $accessRights
        }

        # Получаем список общих сетевых папок на текущем компьютере
        $networkFolders = Get-WmiObject -Class Win32_Share | Where-Object { $_.Path -ne $null -and $_.Type -eq 0 }

        # Если есть открытые сетевые папки, записываем информацию в файл
        if ($networkFolders) {
            $outputData = @()
            $outputData += "$ipAddress \ $computerName \ `"Number of open folders:`" $($networkFolders.Count)"
            $outputData += "Path to folders:"

            foreach ($folder in $networkFolders) {
                $folderPath = $folder.Path
                $outputData += "$folderPath"

                # Получаем информацию о правах доступа и сам процесс для записи в файл
                $accessRights = Get-AccessRights -path $folderPath
                $outputData += $accessRights
            }

            $outputData | Out-File -FilePath $localFilePath -Encoding UTF8
        } else {
            # Если открытых сетевых папок нет, выводим сообщение об этом
            "IP Address: $ipAddress `nComputer Name: $computerName `nNetwork folders not found." | Out-File -FilePath $localFilePath -Encoding UTF8
        }

        # Выводим сообщение об успешном выполнении задачи
        Write-Host "Information gathered and saved to $localFilePath."

        # Восстановить предыдущую настройку кодировки
        [System.Threading.Thread]::CurrentThread.CurrentCulture = $prevCulture
        '''

        # Запись содержимого PowerShell скрипта во временный файл
        with open(ps_script_path, 'w', encoding='utf-8') as f:
            f.write(ps_script_content)

        log_message(log_window, "PowerShell script created. Executing script...")

        # Команда для выполнения скрипта PowerShell
        ps_command = f'powershell.exe -ExecutionPolicy Bypass -File "{ps_script_path}"'
        result = subprocess.run(ps_command, shell=True, capture_output=True, text=True)

        if result.returncode == 0:
            log_message(log_window, "PowerShell script executed successfully.")
            log_message(log_window, result.stdout)

            # Поиск случайного числа в выводе PowerShell
            match = re.search(r'(\d+)', result.stdout)
            if match:
                random_number = int(match.group())
                log_message(log_window, f"Random number generated by PowerShell: {random_number}")

                # Проверяем, создался ли файл локально
                log_message(log_window, "Checking local Temp folder for the created file...")
                local_files = os.listdir(temp_dir)

                found_file = None
                for file_name in local_files:
                    if file_name.startswith(str(random_number)):
                        found_file = file_name
                        break

                if found_file:
                    local_file_path = os.path.join(temp_dir, found_file)
                    log_message(log_window, f"File created locally: {local_file_path}")

                    # Копируем файл в сетевую папку
                    log_message(log_window, f"Copying file to network folder: {network_folder_path}")
                    shutil.copy(local_file_path, network_folder_path)

                    # Проверка файла в сетевой папке
                    log_message(log_window, "Searching for the file in the network folder...")
                    files_in_network_folder = os.listdir(network_folder_path)
                    network_found_file = None
                    for file_name in files_in_network_folder:
                        if file_name.startswith(str(random_number)):
                            network_found_file = file_name
                            break

                    if network_found_file:
                        full_file_path = os.path.join(network_folder_path, network_found_file)
                        log_message(log_window, f"Found file: {full_file_path}")
                        
                        # Чтение файла и анализ содержимого
                        with open(full_file_path, 'r', encoding='utf-8') as output_file:
                            output_data = output_file.read()

                        # Лог содержимого файла для отладки
                        log_message(log_window, f"File content:\n{output_data}")

                        # Установка префикса в зависимости от содержимого файла
                        new_prefix = "Empty_"  # По умолчанию "Empty_"
                        if "Number of open folders:" in output_data:
                            open_folders_count = int(re.search(r'\d+', output_data).group())
                            log_message(log_window, f"Open folders count: {open_folders_count}")
                            if open_folders_count > 0:
                                # Проверяем наличие прав, связанных с "Everyone", "Все" или "All"
                                if re.search(r'(Everyone|Все|All)([:/\\])', output_data):
                                    new_prefix = "Нарушение_"
                                    log_message(log_window, "Violation detected based on folder permissions.")
                                else:
                                    new_prefix = "OpenShareFind_"
                                    log_message(log_window, "Open folders found, but no violations.")
                        else:
                            log_message(log_window, "No open folders found, setting prefix to 'Empty_'.")

                        # Переименование файла
                        new_filename = f"{new_prefix}{network_found_file}"
                        new_file_path = os.path.join(network_folder_path, new_filename)
                        os.rename(full_file_path, new_file_path)
                        log_message(log_window, f"File renamed to: {new_file_path}")

                        # Выводим сообщение об успешном создании файла
                        show_success_message(network_folder_path, new_filename)
                    else:
                        raise Exception("File not found in the network folder.")
                else:
                    raise Exception("File not found in local Temp folder.")
            else:
                raise Exception("Random number not found in PowerShell output.")
        else:
            raise Exception(f"Error executing PowerShell script: {result.stderr}")

    except Exception as e:
        show_error_message(str(e))

# Функция для запуска программы с интерфейсом
def run_gui():
    root = tk.Tk()
    root.title("Network File Creation Tool")

    # Окно для вывода лога
    log_window = scrolledtext.ScrolledText(root, wrap=tk.WORD, width=100, height=30)
    log_window.pack(padx=10, pady=10)

    # Запуск программы в отдельном потоке
    root.after(100, lambda: main_program(log_window))

    root.mainloop()

# Запуск программы
run_gui()

Данный код сделан специально с отладкой, чтобы можно было сразу понять где появляется ошибка при подключении или другие ошибки.
Логика работы данной программы:

  • Подключение к сетевой папке:

    • Попытка отключения предыдущих подключений с помощью команды net use /delete.

    • Попытка подключения к сетевой папке с использованием указанных учетных данных.

  • Создание временного PowerShell скрипта:

    • Генерация текущей даты и времени для именования файлов.

    • Создание временного каталога C:\Temp (если он не существует).

    • Запись PowerShell скрипта во временный файл.

  • Выполнение PowerShell скрипта:

    • Сбор информации о сетевых папках и правах доступа.

    • Запись информации в файл.

  • Проверка и работа с файлом:

    • Поиск файла, созданного PowerShell скриптом в локальной папке C:\Temp.

    • Копирование файла в сетевую папку.

    • Проверка содержимого файла и переименование файла на основе анализа прав доступа и наличия открытых папок.

  • Завершение и обработка ошибок:

    • Отображение сообщений об успехе или ошибках.

Для работы данной программы так же необходимо:

  1. Создать учетную запись с правами администратора, которая будет вшита в данную программу ( нужно так же понимать, что для данной УЗ необходимо сделать ограничения на работу, кроме тех, которые выполняются в ходе работы программы).

  2. Создать на сервере папку и расшарить доступ к ней для данной УЗ, Так же для данной папки необходимо сделать разрешения на чтение\запись.

Код программы без отладочных механизмов:

import subprocess
import os
import datetime
import shutil
import re
import tkinter as tk
from tkinter import messagebox, scrolledtext

# Функция для обновления лога в текстовом окне
def log_message(log_window, message):
    log_window.insert(tk.END, message + '\n')
    log_window.see(tk.END)
    log_window.update_idletasks()

# Функция для отображения окна с сообщением об ошибке
def show_error_message(error_message):
    messagebox.showerror("Error", error_message)

# Функция для отображения окна с успешным сообщением
def show_success_message(file_path, file_name):
    messagebox.showinfo("Success", f"File created successfully!\n\nFile name: {file_name}\nNetwork path: {file_path}")

# Основной код программы
#def main_program(log_window):
def main_program():
    try:
        # Путь к сетевой папке и учетные данные (замените на реальные данные в рабочей среде)
        network_folder_path = r'\\DESKTOP-N391HHM\Users\warde\Desktop\test'  # Замените на реальный сетевой путь
        username = 'admin'  # Замените на реальное имя пользователя домена
        password = 'password'  # Замените на реальный пароль

        # Логирование подключения к сетевой папке
        #log_message(log_window, "Attempting to disconnect old network connection...")
        disconnect_command = f"net use {network_folder_path} /delete"
        subprocess.run(disconnect_command, shell=True)

        #log_message(log_window, "Attempting to connect to network folder...")
        net_use_command = f"net use {network_folder_path} /user:{username} {password}"
        result = subprocess.run(net_use_command, shell=True, capture_output=True, text=True, encoding='cp866')

        if result.returncode == 0:
            #log_message(log_window, f"Successfully connected to the network folder: {network_folder_path}")
            pass
        else:
            error_message = result.stderr
            raise Exception(f"Error connecting to the network folder: {error_message}")

        # Генерация текущей даты и времени для именования файлов
        current_datetime = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')

        # Путь к временному скрипту PowerShell (используем C:\Temp для избежания ошибок доступа)
        temp_dir = "C:\\Temp"
        if not os.path.exists(temp_dir):
            os.makedirs(temp_dir)
        ps_script_path = os.path.join(temp_dir, 'temp_script.ps1')

        # Логирование создания скрипта
        #log_message(log_window, "Creating PowerShell script...")

        # Содержимое скрипта PowerShell для сбора данных
        ps_script_content = r'''
        # Установка культуры на английский для корректной работы
        $prevCulture = [System.Threading.Thread]::CurrentThread.CurrentCulture
        [System.Threading.Thread]::CurrentThread.CurrentThread.CurrentCulture = 'en-US'

        # получаем IP машины
        $ipAddress = (Test-Connection -ComputerName $env:COMPUTERNAME -Count 1).IPV4Address.IPAddressToString

        # получаем имя компьютера
        $computerName = $env:COMPUTERNAME

        # генерируем рандомное число
        $randomNumber = Get-Random -Minimum 1 -Maximum 10000

        # Создадим локальный файл  в Temp
        $localFolderPath = "C:\\Temp"
        $fileName = "$($randomNumber)_$($ipAddress)_$($computerName)_$(Get-Date -Format 'yyyy-MM-dd_HH-mm-ss').txt"
        $localFilePath = "$localFolderPath\$fileName"

        # Отладочная информация
        Write-Host "File will be created at $localFilePath"

        # функция для получения прав доступа и замена на читабельные данные
        function Get-AccessRights {
            param($path)
            $accessRights = & icacls $path | Out-String
            $accessRights = $accessRights -replace '\(OI\)', '/Owner'  # Owner object
            $accessRights = $accessRights -replace '\(CI\)', '/Container'  # Container
            $accessRights = $accessRights -replace '\(F\)', '/Full access'  # Full access
            $accessRights = $accessRights -replace '\(RX\)', '/Read and execute'  # Read and execute
            return $accessRights
        }

        # Получаем список общих сетевых папок на текущем компьютере
        $networkFolders = Get-WmiObject -Class Win32_Share | Where-Object { $_.Path -ne $null -and $_.Type -eq 0 }

        # Если есть открытые сетевые папки, записываем информацию в файл
        if ($networkFolders) {
            $outputData = @()
            $outputData += "$ipAddress \ $computerName \ `"Number of open folders:`" $($networkFolders.Count)"
            $outputData += "Path to folders:"

            foreach ($folder in $networkFolders) {
                $folderPath = $folder.Path
                $outputData += "$folderPath"

                # Получаем информацию о правах доступа и сам процесс для записи в файл
                $accessRights = Get-AccessRights -path $folderPath
                $outputData += $accessRights
            }

            $outputData | Out-File -FilePath $localFilePath -Encoding UTF8
        } else {
            # Если открытых сетевых папок нет, выводим сообщение об этом
            "IP Address: $ipAddress `nComputer Name: $computerName `nNetwork folders not found." | Out-File -FilePath $localFilePath -Encoding UTF8
        }

        # Выводим сообщение об успешном выполнении задачи
        Write-Host "Information gathered and saved to $localFilePath."

        # Восстановить предыдущую настройку кодировки
        [System.Threading.Thread]::CurrentThread.CurrentCulture = $prevCulture
        '''

        # Запись содержимого PowerShell скрипта во временный файл
        with open(ps_script_path, 'w', encoding='utf-8') as f:
            f.write(ps_script_content)

        #log_message(log_window, "PowerShell script created. Executing script...")

        # Команда для выполнения скрипта PowerShell
        ps_command = f'powershell.exe -ExecutionPolicy Bypass -File "{ps_script_path}"'
        result = subprocess.run(ps_command, shell=True, capture_output=True, text=True)

        if result.returncode == 0:
            #log_message(log_window, "PowerShell script executed successfully.")
            #log_message(log_window, result.stdout)

            # Поиск случайного числа в выводе PowerShell
            match = re.search(r'(\d+)', result.stdout)
            if match:
                random_number = int(match.group())
                #log_message(log_window, f"Random number generated by PowerShell: {random_number}")

                # Проверяем, создался ли файл локально
                #log_message(log_window, "Checking local Temp folder for the created file...")
                local_files = os.listdir(temp_dir)

                found_file = None
                for file_name in local_files:
                    if file_name.startswith(str(random_number)):
                        found_file = file_name
                        break

                if found_file:
                    local_file_path = os.path.join(temp_dir, found_file)
                    #log_message(log_window, f"File created locally: {local_file_path}")

                    # Копируем файл в сетевую папку
                    #log_message(log_window, f"Copying file to network folder: {network_folder_path}")
                    shutil.copy(local_file_path, network_folder_path)

                    # Проверка файла в сетевой папке
                    #log_message(log_window, "Searching for the file in the network folder...")
                    files_in_network_folder = os.listdir(network_folder_path)
                    network_found_file = None
                    for file_name in files_in_network_folder:
                        if file_name.startswith(str(random_number)):
                            network_found_file = file_name
                            break

                    if network_found_file:
                        full_file_path = os.path.join(network_folder_path, network_found_file)
                        #log_message(log_window, f"Found file: {full_file_path}")
                        
                        # Чтение файла и анализ содержимого
                        with open(full_file_path, 'r', encoding='utf-8') as output_file:
                            output_data = output_file.read()

                        # Лог содержимого файла для отладки
                        #log_message(log_window, f"File content:\n{output_data}")

                        # Установка префикса в зависимости от содержимого файла
                        new_prefix = "Empty_"  # По умолчанию "Empty_"
                        if "Number of open folders:" in output_data:
                            open_folders_count = int(re.search(r'\d+', output_data).group())
                            #log_message(log_window, f"Open folders count: {open_folders_count}")
                            if open_folders_count > 0:
                                # Проверяем наличие прав, связанных с "Everyone", "Все" или "All"
                                if re.search(r'(Everyone|Все|All)([:/\\])', output_data):
                                    new_prefix = "Нарушение_"
                                    #log_message(log_window, "Violation detected based on folder permissions.")
                                else:
                                    new_prefix = "OpenShareFind_"
                                    #log_message(log_window, "Open folders found, but no violations.")
                        else:
                            #log_message(log_window, "No open folders found, setting prefix to 'Empty_'.")
                            pass
                        # Переименование файла
                        new_filename = f"{new_prefix}{network_found_file}"
                        new_file_path = os.path.join(network_folder_path, new_filename)
                        os.rename(full_file_path, new_file_path)
                        #log_message(log_window, f"File renamed to: {new_file_path}")

                        # Выводим сообщение об успешном создании файла
                        #show_success_message(network_folder_path, new_filename)
                    else:
                        raise Exception("File not found in the network folder.")
                else:
                    raise Exception("File not found in local Temp folder.")
            else:
                raise Exception("Random number not found in PowerShell output.")
        else:
            raise Exception(f"Error executing PowerShell script: {result.stderr}")

    except Exception as e:
        show_error_message(str(e))

# Функция для запуска программы с интерфейсом
#def run_gui():
    #root = tk.Tk()
    #root.title("Network File Creation Tool")

    # Окно для вывода лога
    #log_window = scrolledtext.ScrolledText(root, wrap=tk.WORD, width=100, height=30)
    #log_window.pack(padx=10, pady=10)

    # Запуск программы в отдельном потоке
    #root.after(100, lambda: main_program(log_window))
    #root.after(100, lambda: main_program())

    #root.mainloop()

# Запуск программы
#run_gui()
main_program()

Логика дополнительного усложнения

Зачем просматривать каждый файл с информацией, когда можно этого не делать? Именно поэтому я внедрил механизм переименовки файлов в зависимости от их содержимого. Это все регулируется в данном блоке и при желании можно отредактировать его:

# Установка префикса в зависимости от содержимого файла
new_prefix = "Empty_"  # По умолчанию "Empty_"
    if "Number of open folders:" in output_data:
        open_folders_count = int(re.search(r'\d+', output_data).group())
        #log_message(log_window, f"Open folders count: {open_folders_count}")
            if open_folders_count > 0:
            # Проверяем наличие прав, связанных с "Everyone", "Все" или "All"
              if re.search(r'(Everyone|Все|All)([:/\\])', output_data):
                    new_prefix = "Нарушение_"
                    #log_message(log_window, "Violation detected based on folder permissions.")
              else:
              new_prefix = "OpenShareFind_"
              #log_message(log_window, "Open folders found, but no violations.")

В данном случае есть три варианта: Нарушение, открытая шара найдена и пусто. Нарушение ставится в случае, если найдена открытая шара, и есть доступ для всех.

Результат работы программы, при наличии общего доступа с нарушением

Результат работы программы, при наличии общего доступа с нарушением
Результат работы программы, при наличии общего доступа с ограничениями

Результат работы программы, при наличии общего доступа с ограничениями
Результат работы программы, при отсутствии папок с общим доступом

Результат работы программы, при отсутствии папок с общим доступом

К вопросу о том, зачем генерировать случайное число: Для функции переименовки файла программа должна найти файл, с которым надо работать, поэтому этот механизма как некий идентификатор для дальнейшей работы.

Для непосредственного удаленного запуска можно использовать как и встроенные средства в АД, так и Kaspersky Endpoint Security.

Заключение

Данная программа позволяет централизовано собирать данные по открытым сетевым ресурсам в компании. Да, есть программы куда лучше, куда функциональнее, но в данном случае захотелось попробовать сделать подобное с другим подходом, сделать централизованный сбор информации, вместо того, чтоб сидеть сканировать пул IP-адресов и ждать.
Надеюсь кому-нибудь пригодятся данные наработки в своей работе.

Для предоставления общего доступа к файлу нужно, чтобы все компьютеры были подключены к одной и той же сети. Windows предлагает два варианта открытия доступа — обычный и расширенный, а также функцию «Домашняя группа». Все это немного сбивает с толку. Мы расскажем об обычном общем доступе, так как он более унифицирован для разных версий операционной системы.

В качестве протокола прикладного уровня для удаленного доступа используется SMB (Server Message Block — блок сообщений сервера), который основан на надежном TCP-соединении и инфраструктуре IP.

Открытие общего доступа

Щелкните правой кнопкой мыши по папке, доступ к которой нужно открыть, и выберите «Свойства | Доступ | Общий доступ». В следующем диалоговом окне «Доступ к сети» установите разрешения для выбранных пользователей.

Как настроить общий доступ к папкам на компьютерах Windows

Для второго шага уже определен пользователь папки «Владелец». Если вы теперь щелкните «Поделиться», то для доступа извне нужно будет вводить имя пользователя и пароль владельца. Проще открыть доступ пользователям с других компьютеров, выбрав в поле с именем пользователя «Все», нажав «Добавить» и установив параметр «Уровень разрешений: Чтение».

Как настроить общий доступ к папкам на компьютерах Windows

Разрешение только на чтение папок в большинстве случаев является лучшим вариантом, иначе существует вероятность случайного удаления или перезаписи файлов с другого компьютера. Если же нужно записать файлы на все ПК в сети, создайте на каждом из них новую папку «Входящие» или с аналогичным названием и откройте ее для общего доступа для пользователей «Все» с уровнем разрешений «Чтение и запись». Теперь можно копировать и перемещать файлы на самом ПК в нужное место.

Открытие общих файлов

Чтобы с другого компьютера домашней сети («клиента») открыть общие файлы, хранящиеся на ПК, где разрешен доступ к общим ресурсам («сервер»), запустите Проводник Windows и перейдите в раздел «Сеть». В результате короткого поиска в нем должно появиться имя сервера. В противном случае введите в адресную строку Проводника два обратных слеша и его имя — например, «\\ИМЯКОМПЬЮТЕРА».

В зависимости от настроек от вас может потребоваться ввести логин и пароль к учетной записи пользователя на сервере или общие файлы отобразятся сразу же, и вам нужно будет в зависимости от предоставленных разрешений при открытии ввести данные для входа. Можно установить флажок, чтобы сохранить данные для входа. Чтобы в дальнейшем быстрее открывать общие файлы, можно создать ярлык папки на Рабочем столе или закрепить его на Панели быстрого доступа.

Подключение сетевого диска

На клиенте легко можно подключить внешний общий ресурс как локальный диск с буквой, чтобы, например, надолго установить общую коллекцию музыки источником мультимедиа для программы-проигрывателя. В Проводнике правой кнопкой мыши щелкните по общему ресурсу и выберите «Подключить сетевой диск…».

На других компьютерах общий ресурс будет отображаться в разделе «Сеть» Проводника и может быть подключен как сетевой диск

На других компьютерах общий ресурс будет отображаться в разделе «Сеть» Проводника и может быть подключен как сетевой диск

Опция «Восстанавливать подключение при входе в систему» полезна, если сервер работает большую часть времени. Если общие файлы нужны только периодически на некоторое время (например, чтобы время от времени создавать резервные копии для ноутбука), можно с помощью текстового редактора написать небольшой скрипт, сохранить его как пакетный файл CMD и при необходимости запускать его двойным щелчком.

Небольшой скрипт может автоматизировать подключение и отключение сетевых дисков, что очень облегчает, например, создание резервных копий ноутбуков, которые подключаются только на некоторое время

Небольшой скрипт может автоматизировать подключение и отключение сетевых дисков

В нашем примере мы подключаем диск Z: к общей папке «Screenshots» на сервере «DEEPTHOUGHT» и запускаем окно Проводника с диском. Нажатие любой клавиши в окне пакетного файла приводит к отключению сетевого диска (при необходимости нужно подтвердить нажатием клавиши «J»), следующее нажатие на кнопку закрывает окно.

Чтобы отобразить список всех общих файлов на вашем компьютере, из стартового меню в «Средствах администрирования Windows» запустите «Управление компьютером» и выберите «Общие папки | Общие ресурсы». В целях безопасности отключите общий доступ к файлам, которые больше не используются. Самый быстрый способ — щелкнуть в окне управления компьютером правой кнопкой по ресурсу.

Кстати, скоро выходит обновление Windows. Что нас ждет в Redstone 5, читайте здесь.

Лайфхаки для работы с Windows:

  • Как переустановить Windows и не потерять лицензию?
  • Как протестировать новую версию Windows

Фото: компании-производители

Редактор направлений «Мобильные устройства» и «Техника для дома»

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Canon 1133a драйвер сканера windows 10 x64
  • Как вернуть стандартные иконки на windows 10
  • Https solutions brother com windows
  • Windows 2016 update to 2019
  • Geforce gtx 2060 windows 7