Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ Builder

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
Samrisbe
1351 / 721 / 33
Регистрация: 28.01.2011
Сообщений: 1,958
#1

Как получить права на создание каталогов и подкаталогов в папке Windows - C++ Builder

03.03.2012, 20:13. Просмотров 1785. Ответов 1
Метки нет (Все метки)

Цитата Сообщение от BRcr Посмотреть сообщение
право доступа на запись к папке Windows
Я уже раньше спрашивал про это так "как во время исполнения программы получить администраторские права на создание каталогов и подкаталогов в папке Windows?" ответа так и не дождался...
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2012, 20:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как получить права на создание каталогов и подкаталогов в папке Windows (C++ Builder):

Пользователь вводит каталог и надо узнать в нём размер всех каталогов и подкаталогов - C++ Builder
Всем привет!Мужики спасайте. Есть такая задачка. Пользователь вводит каталог и надо узнать в нём размер всех катологов и подкаталогов.

Как получить путь к системной папке Temp? - C++ Builder
Здравствуйте!!! Подскажите пожалуйста, как получить путь к системной папке Temp? Этот метод не подходит: //Директория...

Хранение и модификация данных программы в папке Program Files (права доступа) - C++ Builder
Добрый вечер, уважаемые. Встала передо мной следующая проблема, мой проект содержит файл ini и exe. В ini я записываю настройки во...

Создание каталогов и подкаталогов с именами, составленными на основе текущей даты - CMD/BAT
Доброго всем времени суток ! Столкнулся с необходимостью создания BAT файла для работы в автоматическом режиме на локальной машине и...

Как вывести список всех каталогов и подкаталогов в ListBox? - C#
Здравствуйте! Решил опробовать на себе C# (до этого базировался на Pascal). Все вроде не плохо, но над этой проблемой бьюсь весь день......

Создание в текущей папке каталогов - CMD/BAT
Мальчики помогите пожалуйста решить задачку. Сессия через неделю,не успеваю разобраться с ней ( Задача 1 Создание в текущей папке...

1
BRcr
4009 / 2298 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
03.03.2012, 22:35 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Потому что все не так просто и однозначно, как хотелось бы

Права папкам можно выставлять консольными коммандами:
Код
cacls "C:\test" /e /t /c /g Users:f  // права на полный доступ группе пользователей
cacls "C:\test" /e /t /c /g Пользователи:f  // или так, если винда русская
cacls "C:\test" /e /t /c /g Владимир:f  // полный доступ конкретному пользователю

// или с помощью более новой версии:
icacls "C:\test" /grant Владимир:f /t /c
Например, для текущего пользователя можно так:
C++
1
2
3
4
5
6
7
    char name[100] = {'\0'}, cmd[200] = {'\0'};
    unsigned long size = 100;
    GetUserName( name, &size );
    strcpy( cmd, "cacls \"C:\\test\" /e /t /c /g " );
    strcat( cmd, name );
    strcat( cmd, ":f" );
    system( cmd );
Или так:
C++
1
2
3
4
5
6
7
    char name[100] = {'\0'}, cmd[200] = {'\0'};
    unsigned long size = 100;
    GetUserName( name, &size );
    strcpy( cmd, "icacls \"C:\\test\" /grant " );
    strcat( cmd, name );
    strcat( cmd, ":f /t /c" );
    system( cmd );
Но все это не даст вам доступа к папке Windows

Если речь о системах до висты, где нет UAC, к примеру ХР, то там все просто: владельцем папки Windows является группа администраторов, и, ежели программка ваша запущена из-под учетки с администраторскими правами, то и доступ у вас есть.

Начиная с висты, владельцем папки Windows стал TrustedInstaller, а у группы администраторов нет полного доступа к ней. Соответственно, и доступ себе так просто не взять даже из-под учетки админа.
Для этого придется назначить владельцем этой папки, скажем, свою учетку, либо группу администраторов. Однако это приведет к серьезному падению безопасности системы - очень не советую так делать.

Делается это коммандой
Код
takeown /f "C:\Windows" /r /d y  // сделать владельцем текущего пользователя
takeown /f "C:\Windows" /a /r /d y  // сделать владельцем группу администраторов
А потом уж можно назначать себе права.

То есть в итоге как-то так:
C++
1
2
3
4
5
6
7
8
    char name[100] = {'\0'}, cmd[200] = {'\0'};
    unsigned long size = 100;
    GetUserName( name, &size );
    strcpy( cmd, "icacls \"C:\\Windows\" /grant " );
    strcat( cmd, name );
    strcat( cmd, ":f /t /c" );
    system( "takeown /f \"C:\\Windows\" /a /r /d y" );
    system( cmd );
Если программка наша не консольная, то можно все это в батник записать и выполнить.

И все - можно писать в заветную папку... однако, теперь наша система, увы, открыта для вирусов всех форм и размеров Так что стоит дважды подумать - а так ли оно нам надо?
3
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2012, 22:35
Привет! Вот еще темы с ответами:

Не удалось получить список каталогов на ftp в определенной папке - Хостинг
Приветствую, форумчане. Настроил я ftp сервер через filezilla. Права - полные (во всех папках)! Логин и пароль ввожу верные. Файервол...

Как установить права доступа к папке и всем файлам в папке? - PHP
Здравствуйте. Как установить права доступа к папке и всем файлам в папке? Для папки 555, для файлов 444. Функция chmod, устанавливает...

Как получить права администратора в Windows 7? - Visual C++
Программа должна запросить админские права (мне нужно поменять system time). Понял что это както нужно подключать xml файл с ...

Удаление пустых каталогов и подкаталогов - CMD/BAT
Всем привет! Хотелось бы в определенном каталоге удалить все пустые каталоги и подкаталоги. данная команда "for /d %%i in ("D:\1\*") do rd...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru