3

У меня следующая ситуация:

  • Мне нужно открыть папку в корне диска C: на компьютере с Windows 7.
  • Общий ресурс должен предоставлять доступ для чтения / записи любому пользователю на других компьютерах в локальной сети.
  • Компьютер с Windows 7 не является частью домена.
  • Мне нужно установить долю из кода (инструменты командной строки).
  • Если это вообще возможно, код должен работать на любой локализованной установке Windows 7

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

  • Поделиться разрешениями и
  • NTFS разрешения.

Оба должны разрешить доступ для чтения / записи для окончательного решения для работы.

Теперь давайте предположим, что папка для совместного использования называется C:\SharedFolder. С повышенными привилегиями я использую инструменты командной строки для создания папки и затем предоставляю общий ресурс:

  1. MD C:\SharedFolder

  2. NET SHARE ShareName = C:\SharedFolder /GRANT: каждый, полный

  3. icacls c:\SharedFolder / грант: r * S-1-1-0: F

Шаг 1 создает папку, шаг 2 создает общий ресурс с правильными разрешениями общего ресурса, а шаг 3 добавляет необходимые разрешения NTFS, верно? (обратите внимание, что « S-1-1-0 » - это просто SID, соответствующий "Все").

С этими тремя шагами я получаю желаемый общий ресурс, но когда я подключаюсь к нему с другого компьютера, у меня есть доступ только для чтения! Это почему?

Если щелкнуть правой кнопкой мыши общую папку на компьютере с Windows 7, я получу следующее:

Окно свойств папки

Обратите внимание, что флажок только для чтения несколько отмечен!

Я могу легко разрешить ситуацию, щелкнув по метке "только для чтения" (затем нажмите "ОК" или "Применить"), но как я могу сделать это из кода? И зачем это вообще нужно?

Также обратите внимание, что команда NET SHARE использует термин "Все" в переключателе /grant . Это проблематично, потому что в немецкой Windows 7 вы должны написать "Jeder" вместо "Everyone", а в датской Windows правильное слово будет "Alle".

Эта языковая проблема не является проблемой в команде icacls , потому что здесь я могу использовать соответствующий SID (как показано). Но как я могу заставить команду NET SHARE работать на любом языке?

0