![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Recev |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 18.10.2010 Репутация: нет Всего: нет |
Как создать, изменить, сохранить файл в Windows7?
Как приложению получить права администратора? |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 4 Всего: 260 |
запустить приложение от имени администратора. а зачем твоей программе "получать" повышенные привилегии? пусть пользователь при запуске сам выставляет запуск от имени "админа"
|
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Ровно так же, как и в Windows XP. Ответ сильно зависит от того, зачем это надо. Ссылка в тему (для разрабов). -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Самостоятельно - никак. Максимально что можно сделать, так это запросить права администратора. Но при этом пользователю будет выдано соответствующий запрос и иконка приложения будет помечена соответствующим значком.
Что у тебя за задача там такая, что нужны права администратора? Ведь Windows не требует повышенных прав для всех папок, а только для ключевых. Записать в свою D:/123 ты можешь и без прав админа. Что-то мне кажется что ты пытаешься сохранить настройки в Program files -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Recev |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 18.10.2010 Репутация: нет Всего: нет |
Я пытаюсь сохранить файл в C:\, но он не сохраняется. Даже не спрашивает разрешить ли доступ этой программе.
|
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Что сохранить? Неужели другого места подходящего не нашлось, как засорять корень системного диска?
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Во-во.
Добавлено через 1 минуту и 5 секунд Подсказка: в Windows XP (и в Windows 2000) сохранение файла в C:\ тоже не будет работать (сюрприз!). Почему-то это удивляет многих. Уж десять лет так живём. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| remax |
|
||||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: 1 Всего: 5 |
Да ну! Я обычно не пишу в корень диска, но из интереса проверил:
Записал прекрасно, хотя и мусор... У меня XP SP3, а не 98... Правильнее сказать, что начиная с версии win2k есть возможность закрыть доступ к диску или к отдельным каталогам (например к program files от шаловливых рук пользователей и гостей). Но, не факт, что на конкретном компьютере сделано так. Кроме того, если и сделано, то можно в настройках безопасности отменить... П.С. А почему человек хочет писать в корень C: - это очевидно: 1) В корень - чтобы не искать по папкам (или не мучатся с их проверкой/созданием) 2) Диск C: обычно есть, а D: может и не быть в случае одного логического диска в системе. -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
||||
|
|||||
| ZBugz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Eindows 7 тебе не даст писать никуда если UAC включен по умолчанию, кроме C:\Documents and Settings\All Users\Application Data или C:\Documents and Settings\Пользователь\Application Data |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
ZBugz, никуда кроме двух папок? Да ты шо?
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
||||
|
||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: 1 Всего: 5 |
Под обычным. Под админом, само собой. Но у меня XP. И в ней, по сравнению с 7 другая проблема - админам приходится ломать голову как запретить, а не как разрешить (см, например http://forum.oszone.net/nextnewesttothread-164034.html ) Вот еще по теме: Не так страшен UAC Это сообщение отредактировал(а) remax - 3.12.2010, 12:43 -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
| ZBugz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Практически да. Проверь |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Я сохраняю почти в любое место куда хочу с включённым UAC.
|
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
UAC запрещает сохранять только в стратегически важные папки системы. c:, c:\Windows\, c:\Program Files\ и т.п. И то, если настроить права доступа к папке, то и туда можно сохранить даже с включенным UAC. Во все остальные папки можно сохранять что угодно и куда угодно без дополнительного гемора.
Да, кстати, в Windows7 нет папки C:\Documents and Settings\. Её заменила c:\Users\. Но даже там нет папки Application Data, её заменила AppData\Roaming\. Ну это так... к слову. -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| CodeMonkey |
|
||||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Ну ты орех. А ты запусти программу в Windows 7 так же, как запускаешь её в Windows XP: под админом. И она тоже всё прекрасно запишет. А теперь запусти программу в Windows XP так же, как запускаешь её в Windows 7: под обычным пользователем. Что? Кукиш получил вместо записи? Вот то-то и оно. Просто в Windows 7 ты по-умолчанию не-админ - вот и всё. Ещё раз вдумчиво читать. Добавлено через 2 минуты и 6 секунд
Есть там такие папки. Только они являются ссылками на новые места. Добавлено через 4 минуты и 58 секунд
Сразу две ошибки в одном утверждении. В All users тебе никто писать не даст. А в C:\Documents and Settings\Пользователь ты можешь писать в любую подпапку. Добавлено через 9 минут и 2 секунды
Уточнение: есть простое правило: если это только твои данные, то ты имеешь над ними полный контроль. Если это данные системы или других пользователей - доступ у тебя ограничен. Чаще всего только на чтение, а иногда его и вообще нет. Даже на просмотр файлов в папке. Это простое и очевидное правило. Запись в файл или папку, доступную всем пользователям (а системные вещи - частный случай таковых; ещё пример - папка All users) будет означать что вы, как обычный пользователь, можете влиять на других пользователей. Такая сила (влияние на других (в частном случае - на систему)) должна быть доступна только администраторам. Добавлено через 10 минут и 40 секунд Поздравляю, коллега. На вашей машине какая-то скотина программа поменяла разрешения на диск C. Проверьте на чистой системе: группе Пользователи стоит доступ только на чтение, а Администраторам и системе - полный. Добавлено через 14 минут и 19 секунд
Про SHGetSpecialFolderPath, SHGetFolderPath или SHGetKnownFolderPath первый раз слышим? -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
||||||||
|
|||||||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
И по этой вот ссылке: По-умолчанию, если систему уже не потрогали кривые программы (возможно, конечно, что и ручки, но как-то хочется верить), то защищена она вполне нормально. Местами даже слишком жёстко. Обычный пользователь фатально напакостить не может. Смысл менять разрешения? Далее, папочки TEMP находятся в подпапках профилей пользователей, что в Documents and Settings. Соответственно, надо смотреть, чтобы у пользователя был доступ на свой профиль. У Documents and Settings права доступа вообще стоят все правильные. И они и так не наследуются, да. Так что просто туда руки не надо свои запускать - и всё будет OK. Ну уж в крайнем случае можно: - Сравнить с правами по-умолчанию (поставить систему на другую машину или виртуалку). - Восстановить ACL (google по repair OR restore OR backup OR restore Windows ACL). Например. Или. - Вручную проверить доступ к файлам. Заходим в Свойства, вкладка Безопасность, кнопка Дополнительно, вкладка Действующие разрешения. Выбираем последовательно Сисетму, Администраторов, Пользователей и себя - и смотрим, какие права есть на эту папку с учётом всех правил. Это сообщение отредактировал(а) CodeMonkey - 4.12.2010, 14:31 -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| ZBugz |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Да, именно так, я просто подумал что автор имел виду Program Files
Это я знаю. Я к тому сказал, что можно получить через API папку юзера или всех юзеров и туда писать. А уж в зависисмости от версии Windows оно вернет нужный путь. Добавлено через 4 минуты и 38 секунд
Никакой ошибки нету. Если систему не трогали, то пишеться все легко и замечательноC:\Documents and Settings\All Users\Application Data или C:\Documents and Settings\текущий юзер\Application Data Я только туда и пушу (All users) во избежания всех проблем. Туда вообще все программы пишут в основном, вот я и подсмотрел |
||||||
|
|||||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
(тяжкий вздох) Ставим чистую систему, открываем папку Document and settings\All users. Смотри свойства и далее вкладку Безопасность. Что мы видим? Система и админы - полный доступ, остальным - не выше чтения. Что на XP, что на Win7. Потом открываем Document and settings\All users\Application Data. И снова смотрим свойства и вкладку Безопасность. И снова: система и админы - полный доступ, остальным - не выше чтения. И снова это выполняется везде. Народ. Не надо писать ерунду. Если на вашей машине испорчены ACL-списки - то хоть головой подумайте. Не верите мне - спросите у Microsoft. Обычный пользователь не может менять данные других пользователей и настройки системы - это базовый принцип не только Windows, но и любой другой многопользовательской системы. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| ZBugz |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Ой, я ошибся, то что в WinXp C:\Documents and Settings\All Users\Application Data, то в Win7 C:\ProgramData\Папка программы\Что хочешь пишешь
Никакого вздоха тяжкого Админы Пользователи Создатель-Владелец Система Последнее вообще самое главное.
C:\Users\Имя пользователя\AppData\Local Админы Юзер Система Так что все хорошо. Использую:
CSIDL_COMMON_APPDATA + Имя паки программы = никаких глюков вообще. Ниодин пользователь программы не написал ниодного письма. Это сообщение отредактировал(а) ZBugz - 4.12.2010, 21:12 |
||||||
|
|||||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |