Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание и сохранение файлов в Windows7 
:(
    Опции темы
Recev
  Дата 1.12.2010, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 18.10.2010

Репутация: нет
Всего: нет



Как создать, изменить, сохранить файл в Windows7?
Как приложению получить права администратора?
 smile 
PM MAIL   Вверх
skyboy
Дата 2.12.2010, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 4
Всего: 260



запустить приложение от имени администратора. а зачем твоей программе "получать" повышенные привилегии? пусть пользователь при запуске сам выставляет запуск от имени "админа"
PM MAIL   Вверх
CodeMonkey
Дата 2.12.2010, 02:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Цитата(Recev @  2.12.2010,  00:02 Найти цитируемый пост)
Как создать, изменить, сохранить файл в Windows7?


Ровно так же, как и в Windows XP.

Цитата(Recev @  2.12.2010,  00:02 Найти цитируемый пост)
Как приложению получить права администратора?


Ответ сильно зависит от того, зачем это надо.


Ссылка в тему (для разрабов).


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Poseidon
Дата 2.12.2010, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(Recev @  1.12.2010,  23:02 Найти цитируемый пост)
Как приложению получить права администратора?
Самостоятельно - никак. Максимально что можно сделать, так это запросить права администратора. Но при этом пользователю будет выдано соответствующий запрос и иконка приложения будет помечена соответствующим значком.

Что у тебя за задача там такая, что нужны права администратора? Ведь Windows не требует повышенных прав для всех папок, а только для ключевых. Записать в свою D:/123 ты можешь и без прав админа. Что-то мне кажется что ты пытаешься сохранить настройки в Program files  smile 



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Recev
Дата 2.12.2010, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 18.10.2010

Репутация: нет
Всего: нет



Я пытаюсь сохранить файл в C:\, но он не сохраняется. Даже не спрашивает разрешить ли доступ этой программе.
PM MAIL   Вверх
Poseidon
Дата 2.12.2010, 15:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(Recev @  2.12.2010,  15:27 Найти цитируемый пост)
Я пытаюсь сохранить файл в C:\
Что сохранить? Неужели другого места подходящего не нашлось, как засорять корень системного диска?



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
CodeMonkey
Дата 3.12.2010, 01:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Во-во.

Добавлено через 1 минуту и 5 секунд
Подсказка: в Windows XP (и в Windows 2000) сохранение файла в C:\ тоже не будет работать (сюрприз!). Почему-то это удивляет многих. Уж десять лет так живём.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
remax
Дата 3.12.2010, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент
**


Профиль
Группа: Участник Клуба
Сообщений: 686
Регистрация: 7.4.2002
Где: Украина, Харьков

Репутация: 1
Всего: 5



Цитата(CodeMonkey @ 3.12.2010,  01:08)
Во-во.

Добавлено @ 01:09
Подсказка: в Windows XP (и в Windows 2000) сохранение файла в C:\ тоже не будет работать (сюрприз!). Почему-то это удивляет многих. Уж десять лет так живём.

Да ну!

Я обычно не пишу в  корень диска, но из интереса проверил:
Код

procedure TForm1.Button2Click(Sender: TObject);
var
 t:textfile;
begin
  assignfile(t,'c:/delme.tmp');
  rewrite(t);
  writeln(t,'Ку-ку!');
  closefile(t);
end;


Записал прекрасно, хотя и мусор... У меня XP SP3, а не 98...

Правильнее сказать, что начиная с версии win2k есть возможность закрыть доступ к диску или к отдельным каталогам (например к program files от шаловливых рук пользователей и гостей). Но, не факт, что на конкретном компьютере сделано так.  Кроме того, если и сделано, то можно в настройках безопасности отменить...

П.С. А почему человек хочет писать в корень C: - это очевидно:
1) В корень - чтобы не искать по папкам (или не мучатся с их проверкой/созданием)
2) Диск C: обычно есть, а  D:   может и не быть в случае одного логического диска в системе. 


--------------------
Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку
PM MAIL ICQ Skype   Вверх
ZBugz
Дата 3.12.2010, 09:11 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 636
Регистрация: 15.2.2006
Где: Москва

Репутация: 6
Всего: 6



Цитата(Recev @ 2.12.2010,  15:27)
Я пытаюсь сохранить файл в C:\, но он не сохраняется. Даже не спрашивает разрешить ли доступ этой программе.

Eindows 7 тебе не даст писать никуда если UAC включен по умолчанию, кроме C:\Documents and Settings\All Users\Application Data или C:\Documents and Settings\Пользователь\Application Data
PM MAIL   Вверх
Poseidon
Дата 3.12.2010, 09:38 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



ZBugz, никуда кроме двух папок? Да ты шо?  smile 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Akella
Дата 3.12.2010, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(remax @  3.12.2010,  01:41 Найти цитируемый пост)
Да ну!

Я обычно не пишу в  корень диска, но из интереса проверил:

Под обычным пользователем или под админом?
PM MAIL   Вверх
remax
Дата 3.12.2010, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент
**


Профиль
Группа: Участник Клуба
Сообщений: 686
Регистрация: 7.4.2002
Где: Украина, Харьков

Репутация: 1
Всего: 5



Цитата(Akella @ 3.12.2010,  10:27)
Цитата(remax @  3.12.2010,  01:41 Найти цитируемый пост)
Да ну!

Я обычно не пишу в  корень диска, но из интереса проверил:

Под обычным пользователем или под админом?


Под обычным. Под админом, само собой. Но у меня XP. И в ней, по сравнению с 7 другая проблема - админам приходится ломать голову как запретить, а не как разрешить (см, например  http://forum.oszone.net/nextnewesttothread-164034.html )

Вот еще по теме: Не так страшен UAC

Это сообщение отредактировал(а) remax - 3.12.2010, 12:43


--------------------
Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку
PM MAIL ICQ Skype   Вверх
ZBugz
Дата 3.12.2010, 13:34 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 636
Регистрация: 15.2.2006
Где: Москва

Репутация: 6
Всего: 6



Цитата(Poseidon @ 3.12.2010,  09:38)
ZBugz, никуда кроме двух папок? Да ты шо?  smile

Практически да. Проверь smile 
PM MAIL   Вверх
Akella
Дата 3.12.2010, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Я сохраняю почти в любое место куда хочу с включённым UAC.
PM MAIL   Вверх
Poseidon
Дата 3.12.2010, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(ZBugz @  3.12.2010,  13:34 Найти цитируемый пост)
Практически да. Проверь
UAC запрещает сохранять только в стратегически важные папки системы. c:, c:\Windows\, c:\Program Files\ и т.п. И то, если настроить права доступа к папке, то и туда можно сохранить даже с включенным UAC. Во все остальные папки можно сохранять что угодно и куда угодно без дополнительного гемора.

Цитата(ZBugz @  3.12.2010,  09:11 Найти цитируемый пост)
Eindows 7 тебе не даст писать никуда если UAC включен по умолчанию, кроме C:\Documents and Settings\All Users\Application Data или C:\Documents and Settings\Пользователь\Application Data

Да, кстати, в Windows7 нет папки C:\Documents and Settings\. Её заменила c:\Users\. Но даже там нет папки Application Data, её заменила AppData\Roaming\. Ну это так... к слову.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
CodeMonkey
Дата 4.12.2010, 02:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Цитата(remax @  3.12.2010,  02:41 Найти цитируемый пост)
Я обычно не пишу в  корень диска, но из интереса проверил:

Код
procedure TForm1.Button2Click(Sender: TObject);
var
 t:textfile;
begin
  assignfile(t,'c:/delme.tmp');
  rewrite(t);
  writeln(t,'Ку-ку!');
  closefile(t);
end;


Записал прекрасно, хотя и мусор... У меня XP SP3, а не 98...


Ну ты орех. А ты запусти программу в Windows 7 так же, как запускаешь её в Windows XP: под админом. И она тоже всё прекрасно запишет.

А теперь запусти программу в Windows XP так же, как запускаешь её в Windows 7: под обычным пользователем. Что? Кукиш получил вместо записи? Вот то-то и оно.


Просто в Windows 7 ты по-умолчанию не-админ - вот и всё. Ещё раз вдумчиво читать.

Добавлено через 2 минуты и 6 секунд
Цитата(Poseidon @  3.12.2010,  15:19 Найти цитируемый пост)
Да, кстати, в Windows7 нет папки C:\Documents and Settings\. Её заменила c:\Users\. Но даже там нет папки Application Data, её заменила AppData\Roaming\. Ну это так... к слову. 


Есть там такие папки. Только они являются ссылками на новые места.

Добавлено через 4 минуты и 58 секунд
Цитата(ZBugz @  3.12.2010,  10:11 Найти цитируемый пост)
C:\Documents and Settings\All Users\Application Data или C:\Documents and Settings\Пользователь\Application Data


Сразу две ошибки в одном утверждении. В All users тебе никто писать не даст. А в C:\Documents and Settings\Пользователь ты можешь писать в любую подпапку.

Добавлено через 9 минут и 2 секунды
Цитата(Poseidon @  3.12.2010,  15:19 Найти цитируемый пост)
UAC запрещает сохранять только в стратегически важные папки системы. c:, c:\Windows\, c:\Program Files\ и т.п. ... Во все остальные папки можно сохранять что угодно и куда угодно без дополнительного гемора.


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

Это простое и очевидное правило.

Запись в файл или папку, доступную всем пользователям (а системные вещи - частный случай таковых; ещё пример - папка All users) будет означать что вы, как обычный пользователь, можете влиять на других пользователей. Такая сила (влияние на других (в частном случае - на систему)) должна быть доступна только администраторам.

Добавлено через 10 минут и 40 секунд
Цитата(remax @  3.12.2010,  13:17 Найти цитируемый пост)
Под обычным.


Поздравляю, коллега. На вашей машине какая-то скотина программа поменяла разрешения на диск C. Проверьте на чистой системе: группе Пользователи стоит доступ только на чтение, а Администраторам и системе - полный.

Добавлено через 14 минут и 19 секунд
Цитата(remax @  3.12.2010,  02:41 Найти цитируемый пост)
П.С. А почему человек хочет писать в корень C: - это очевидно:
1) В корень - чтобы не искать по папкам (или не мучатся с их проверкой/созданием)
2) Диск C: обычно есть, а  D:   может и не быть в случае одного логического диска в системе.  


 smile 

Про SHGetSpecialFolderPath, SHGetFolderPath или SHGetKnownFolderPath первый раз слышим?  


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
CodeMonkey
Дата 4.12.2010, 03:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Цитата(remax @  3.12.2010,  13:17 Найти цитируемый пост)
например  http://forum.oszone.net/nextnewesttothread-164034.html


И по этой вот ссылке:

По-умолчанию, если систему уже не потрогали кривые программы (возможно, конечно, что и ручки, но как-то хочется верить), то защищена она вполне нормально. Местами даже слишком жёстко. Обычный пользователь фатально напакостить не может. Смысл менять разрешения?

Далее, папочки 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++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
ZBugz
Дата 4.12.2010, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 636
Регистрация: 15.2.2006
Где: Москва

Репутация: 6
Всего: 6



Цитата

UAC запрещает сохранять только в стратегически важные папки системы. c:, c:\Windows\, c:\Program Files\ и т.п. И то, если настроить права доступа к папке, то и туда можно сохранить даже с включенным UAC. Во все остальные папки можно сохранять что угодно и куда угодно без дополнительного гемора.

Да, именно так, я просто подумал что автор имел виду Program Files
Цитата

Да, кстати, в Windows7 нет папки C:\Documents and Settings\. Её заменила c:\Users\. Но даже там нет папки Application Data, её заменила AppData\Roaming\. Ну это так... к слову.

Это я знаю. Я к тому сказал, что можно получить через API папку юзера или всех юзеров и туда писать. А уж в зависисмости от версии Windows оно вернет нужный путь.

Добавлено через 4 минуты и 38 секунд
Цитата

Сразу две ошибки в одном утверждении. В All users тебе никто писать не даст. А в C:\Documents and Settings\Пользователь ты можешь писать в любую подпапку.

Никакой ошибки нету. Если систему не трогали, то пишеться все легко и замечательноC:\Documents and Settings\All Users\Application Data или C:\Documents and Settings\текущий юзер\Application Data

Я только туда и пушу (All users) во избежания всех проблем. Туда вообще все программы пишут в основном, вот я и подсмотрел smile 
PM MAIL   Вверх
CodeMonkey
Дата 4.12.2010, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Цитата(ZBugz @  4.12.2010,  11:02 Найти цитируемый пост)
Если систему не трогали, то пишеться все легко и замечательно C:\Documents and Settings\All Users\Application Data или C:\Documents and Settings\текущий юзер\Application Data


(тяжкий вздох) Ставим чистую систему, открываем папку Document and settings\All users. Смотри свойства и далее вкладку Безопасность. Что мы видим? Система и админы - полный доступ, остальным - не выше чтения. Что на XP, что на Win7. 

Потом открываем Document and settings\All users\Application Data. И снова смотрим свойства и вкладку Безопасность. И снова: система и админы - полный доступ, остальным - не выше чтения. И снова это выполняется везде. 


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


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
ZBugz
Дата 4.12.2010, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 636
Регистрация: 15.2.2006
Где: Москва

Репутация: 6
Всего: 6



Ой, я ошибся, то что в WinXp C:\Documents and Settings\All Users\Application Data, то в Win7 C:\ProgramData\Папка программы\Что хочешь пишешь
Цитата

(тяжкий вздох) Ставим чистую систему, открываем папку Document and settings\All users. Смотри свойства и далее вкладку Безопасность. Что мы видим? Система и админы - полный доступ, остальным - не выше чтения. Что на XP, что на Win7. 

Никакого вздоха тяжкого smile 
Админы
Пользователи
Создатель-Владелец
Система

Последнее вообще самое главное.

Цитата

Потом открываем Document and settings\All users\Application Data. И снова смотрим свойства и вкладку Безопасность. И снова: система и админы - полный доступ, остальным - не выше чтения. И снова это выполняется везде. 

C:\Users\Имя пользователя\AppData\Local
Админы
Юзер 
Система

Так что все хорошо.

Использую:
Код

function GetWindowsFolder(CSIDL: word): WideString;
var
 s:  WideString;
begin
  SetLength(s, MAX_PATH);
  if not SHGetSpecialFolderPath(0, PWideChar(s), CSIDL, true)
  then s := '';
  result := PWideChar(s);
end;

CSIDL_COMMON_APPDATA + Имя паки программы = никаких глюков вообще. Ниодин пользователь программы не написал ниодного письма.

Это сообщение отредактировал(а) ZBugz - 4.12.2010, 21:12
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0709 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.