Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/35: Рейтинг темы: голосов - 35, средняя оценка - 4.83
1 / 1 / 1
Регистрация: 20.08.2009
Сообщений: 6
1

Как програмно заблокировать доступ к папке в Windows XP

20.08.2009, 15:08. Показов 7113. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем здравствуйте!
У меня такая ситуация... Я хочу написать программку, которая паролила бы папки(подруга попросила, ей надо спрятать фотки от родителей=) ).
Помогите с тем как заблокировать доступ к папке под Windiws XP.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.08.2009, 15:08
Ответы с готовыми решениями:

Как заблокировать доступ к папке в C++ Builder
Подскажите пожалуйста как заблокировать доступ к папке с помощью C++ Builder?

Заблокировать доступ к папке
Возможно как то через С# сделать так что бы папку можно было открыть только через программу? Если...

Нужно заблокировать доступ к папке
нужна прога для установки пороля на папку или запрета доступа чтения к ней. есть что нить

Как в Windows 7 заблокировать доступ игре в интернет?
Народ обьяснити как в вин 7 заблокировать доступ игре в интернет?

17
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
20.08.2009, 15:10 2
начните отсюда:
C++
1
2
3
4
5
BOOL SetFileSecurity(
  LPCTSTR lpFileName,                       // file name
  SECURITY_INFORMATION SecurityInformation, // contents
  PSECURITY_DESCRIPTOR pSecurityDescriptor  // SD
);
но:
0. от родителей ничего нельзя прятать!
1. в xp имеются какие-то стандартные средства для этого.
2
1 / 1 / 1
Регистрация: 20.08.2009
Сообщений: 6
20.08.2009, 15:21  [ТС] 3
Спасибо! =)
А можно параметры чуть подробнее... =) ...content-?, SD - ?
1
1856 / 713 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
20.08.2009, 15:24 4
По таким вопросам отправляйся на МСДН. Много чего интересного можно узнать.
http://msdn.microsoft.com/en-u... S.85).aspx
2
1 / 1 / 1
Регистрация: 20.08.2009
Сообщений: 6
20.08.2009, 15:44  [ТС] 5
Ребята, а можно с примером.... Я чет вообще себя лузером считаю...
0
6 / 6 / 0
Регистрация: 14.08.2009
Сообщений: 44
20.08.2009, 16:35 6
Alex-Art,

Юзай locker и не парься!

где найти? www. любимый_поисковик -- go!

Удачи!
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
20.08.2009, 16:40 7
Цитата Сообщение от Alex-Art Посмотреть сообщение
Ребята, а можно с примером....
http://www.codeproject.com/KB/... play=Print
Цитата Сообщение от Alex-Art Посмотреть сообщение
.... Я чет вообще себя лузером считаю...
NIZZJA!!!

ooops! примерчик я из области C# привел
1
279 / 206 / 22
Регистрация: 24.04.2008
Сообщений: 1,398
20.08.2009, 17:19 8
Цитата Сообщение от Alex-Art Посмотреть сообщение
Ребята, а можно с примером.... Я чет вообще себя лузером считаю...
А не проще тогда готовую прогу взять?
0
229 / 67 / 11
Регистрация: 02.06.2009
Сообщений: 280
20.08.2009, 19:08 9
Правой кнопкой по папке - установить атрибут шифрованый.
После этого смотреть фотки сможет только владелец аккаунта.
0
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
20.08.2009, 21:26 10
После этого смотреть фотки сможет только владелец аккаунта.
И еще можно будет смотреть имея специальные дополнительные ключи для дешифрования ( ключи нужны если владелец утерял свои ).
Обычно дополнительными ключи хранятся у пользователя Administrator.
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
20.08.2009, 22:50 11
Alex-Art, сформулируйте вашу суперцель яснее:
- вырасти в глазах подружки
- помочь ей найти способ держать на компьютере фото, которые только она может посмотреть
- попробовать свои силы в программировании
- что-то еще
0
Человек
97 / 82 / 7
Регистрация: 16.06.2009
Сообщений: 229
20.08.2009, 23:51 12
Фотки можно архивировать с использованиям пароля.
0
229 / 67 / 11
Регистрация: 02.06.2009
Сообщений: 280
21.08.2009, 14:25 13
Цитата Сообщение от odip Посмотреть сообщение
И еще можно будет смотреть имея специальные дополнительные ключи для дешифрования ( ключи нужны если владелец утерял свои ).
Обычно дополнительными ключи хранятся у пользователя Administrator.
Обычно они не хранятся, и их нужно специально создавать.
0
1856 / 713 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
21.08.2009, 16:46 14
А можно перехватить функции FindFileFirst итд, и вытирать все упоминания о твоей папке в результатах. А показывать только при правильном вводе пароля.
0
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
22.08.2009, 11:57 15
Цитата Сообщение от odip Посмотреть сообщение
Обычно дополнительными ключи хранятся у пользователя Administrator.
На сколько знаю я, то они выдаются только сертефицированным организациям (типа спецслужб ну или похожих органов).

и как только шифрованный файл сменить OC, включая переустановку ты его уже не откроешь!!!!
0
3 / 3 / 0
Регистрация: 15.03.2010
Сообщений: 26
27.03.2013, 09:30 16
Теме АП. Поставил себе задачу, сделать пароль на папку средствами WinAPI. Руководствуюсь книженцией Системное программирование в среде Win32 Джонсон М. Харт.
Очень муторное описание в этой книжке, с кодом не могу разобраться, ко всему прочему мешает библиотека 98 года использования, которая подключала все бибилиотеки(якобы) #include <EVRYTHNG.H>

вот код использовавшийся тамон какбы из зазличных модулей, т.е. одна прога создает файл с указанными атрибутами, другая считывает, третья еще чтото и т.д.)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// Lock-Folder.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "windows.h"
#include "string.h"
#include <EVRYTHNG.H>
 
int _tmain(int argc, LPTSTR argv[]) {
 
 HANDLE hFile, hSecHeap;
 
 BOOL Force, CreateNew, Change, Exists;
 
 DWORD Mode, DecMode, UsrCnt = ACCT_NAME_SIZE;
 
 TCHAR UsrNam[ACCT_NAME_SIZE];
 
 int FileIndex, GrpIndex, ModeIndex;
 
 /* Массив прав доступа к файлу, следующих в том порядке, который принят в UNIX. */
 
 /* Эти права будут различными для объектов различного типа. */
 
 /*ПРИМЕЧАНИЕ: в полном варианте программы, находящемся на Web-сайте, */
 
 /*используются отдельные массивы масок разрешения и запрещения доступа.*/
 
 DWORD AceMasks[] = {
 
  FILE_GENERIC_READ, FILE_GENERIC_WRITE, FILE_GENERIC_EXECUTE
 
 };
 
 LPSECURITY_ATTRIBUTES pSa = NULL;
 
 ModeIndex = Options(argc, argv, _T("fc"), &Force, &CreateNew, NULL);
 
 GrpIndex = ModeIndex + 2;
 
 FileIndex = ModeIndex + 1;
 
 DecMode = _ttoi(argv[ModeIndex]);
 
 /* Режим защиты представляет собой восьмеричное число. */
 
 Mode = ((DecMode / 100) % 10) * 64 /*Преобразовать в десятичное число.*/
 
      + ((DecMode / 10) % 10) * 8 + (DecMode % 10);
 
 Exists = (_taccess(argv[FileIndex], 0) == 0);
 
 if (!Exists && CreateNew) {
 
  /* Файл не существует; создать новый файл. */
 
  GetUserName(UsrNam, &UsrCnt);
 
  pSa = InitializeUnixSA(Mode, UsrNam, argv[GrpIndex], AceMasks, &hSecHeap);
 
  hFile = CreateFile(argv[FileIndex], 0, 0, pSa, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
 
  CloseHandle(hFile);
 
  HeapDestroy(hSecHeap); /* Освободить память, занимаемую структурами безопасности. */
 
 }
 
 else if (Exists) { /* Файл существует; изменить разрешения доступа. */
 
  Change = ChangeFilePermissions(Mode, argv[FileIndex], AceMasks);
 
 }
 
 return 0;
 
}
ВТОРОЙ:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/* Вывести список атрибутов с указанием разрешений доступа и владельца. */
 
/* Требуются NTFS и Windows NT (под управлением Windows 9x программа работать не будет). */
 
{
 
 DWORD FType = FileType(pFileData), Mode, i;
 
 BOOL Long = Flags[1];
 
 TCHAR GrpNam[ACCT_NAME_SIZE], UsrNam[ACCT_NAME_SIZE];
 
 SYSTEMTIME LastWrite;
 
 TCHAR PermString[] = _T("---------");
 
 const TCHAR RWX[] = {'r','w','x'}, FileTypeChar[] = {' ', 'd'};
 
 if (FType != TYPE_FILE && FType != TYPE_DIR) return FALSE;
 
 _tprintf(_T("\n"));
 
 if (Long) {
 
  Mode = ReadFilePermissions(pFileData->cFileName, UsrNam, GrpNam);
 
  if (Mode == 0xFFFFFFFF) Mode = 0;
 
  for (i = 0; i < 9; i++) {
 
   if (Mode >> (8 – i) & 0x1) PermString[i] = RWX[i % 3];
 
  }
 
  _tprintf(_T("%c%s 18.7s %8.7s%10d"), FileTypeChar[FType – 1], PermString, UsrNam, GrpNam, pFileData->nFileSizeLow);
 
  FileTimeToSystemTime(&(pFileData->ftLastWriteTime), &LastWrite);
 
  _tprintf(_T(" %02d/%02d/%04d %02d:%02d:%02d"), LastWrite.wMonth, LastWrite.wDay, LastWrite.wYear, LastWrite.wHour, LastWrite.wMinute, LastWrite.wSecond);
 
 }
 
 _tprintf(_T(" %s"), pFileData->cFileName);
 
 return TRUE;
DWORD ReadFilePermissions(LPCTSTR lpFileName, LPTSTR UsrNm, LPTSTR GrpNm)
 
 
{
 
 PSECURITY_DESCRIPTOR pSD = NULL;
 
 DWORD LenNeeded, PBits, iAce;
 
 BOOL DaclF, AclDefF, OwnerDefF, GroupDefF;
 
 BYTE DAcl[ACL_SIZE];
 
 PACL pAcl = (PACL)&DAcl;
 
 ACL_SIZE_INFORMATION ASizeInfo;
 
 PACCESS_ALLOWED_ACE pAce;
 
 BYTE AType;
 
 HANDLE ProcHeap = GetProcessHeap();
 
 PSID pOwnerSid, pGroupSid;
 
 TCHAR RefDomain[2][DOM_SIZE];
 
 DWORD RefDomCnt[] = {DOM_SIZE, DOM_SIZE);
 
 DWORD AcctSize[] = {ACCT_NAME_SIZE, ACCT_NAME_SIZE};
 
 SID_NAME_USE sNamUse[] = {SidTypeUser, SidTypeGroup};
 
 /* Получить требуемый размер дескриптора безопасности. */
 
 
 GetFileSecurity(lpFileName, OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION, pSD, 0, &LenNeeded);
 
 pSD = HeapAlloc(ProcHeap, HEAP_GENERATE_EXCEPTIONS, LenNeeded);
 
 GetFileSecurity(lpFileName, OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION, pSD, LenNeeded, &LenNeeded);
 
 GetSecurityDescriptorDacl(pSD, &DaclF, &pAcl, &AclDefF);
 
 GetAclInformation(pAcl, &ASizeInfo, sizeof(ACL_SIZE_INFORMATION), AclSizeInformation);
 
 PBits = 0; /* Вычислить разрешения на доступ на основе ACL. */
 
 
 for (iAce = 0; iAce < ASizeInfo.AceCount; iAce++) {
 
  GetAce(pAcl, iAce, &pAce);
 
  AType = pAce->Header.AceType;
 
  if (AType == ACCESS_ALLOWED_ACE_TYPE) PBits |= (0x1 << (8-iAce));
 
 } 
 
 /* Определить имя владельца и владеющей группы. */
 
 
 GetSecurityDescriptorOwner(pSD, &pOwnerSid, &OwnerDefF);
 
 GetSecurityDescriptorGroup(pSD, &pGroupSid, &GroupDefF);
 
 LookupAccountSid(NULL, pOwnerSid, UsrNm, &AcctSize[0], RefDomain[0], &RefDomCnt[0], &sNamUse[0]);
 
 LookupAccountSid(NULL, pGroupSid, GrpNm, &AcctSize[1], RefDomain[1], &RefDomCnt[1], &sNamUse[1]);
 
 return PBits;
 
}
0
Заблокирован
Автор FAQ
27.03.2013, 10:35 17
welt[NIKE]kind, залочь доступ к файлам с помощью одной из моих старых старые софтин
https://www.cyberforum.ru/visu... ost2197646
https://www.cyberforum.ru/visu... ost2210629
1
3 / 3 / 0
Регистрация: 15.03.2010
Сообщений: 26
28.03.2013, 15:28 18
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
welt[NIKE]kind, залочь доступ к файлам с помощью одной из моих старых старые софтин
https://www.cyberforum.ru/visu... ost2197646
https://www.cyberforum.ru/visu... ost2210629
примеры выше интересные, но немного не устраивают... Во первых мне нужно для работы БЛОКИРОВКА ПАПКИ (в которой файлы). С интерфейсом нет смысла работать, достаточно было бы и консоли на первое время, главное чтобы функционал работал(интерфейс у самого в перспективе). Хотелось бы чтобы программа не выделяла под себя место и файлы хранились в программе (как это предлагается в платных аналогах типа Anvide Lock Folder). МОЯ ЗАДАЧА просто нужен пароль на папку(которая на рабочем столе например). По идее задание тривиально, но на деле оказалось почти невозможным, приходится мудрить с правами на доступ и т.д.

Добавлено через 15 часов 46 минут

Ни у кого нету примеров работы с функцией LockFile???

C++
1
2
3
4
5
6
7
BOOL LockFile(
  HANDLE hFile,                   // дескриптор файла
  DWORD dwFileOffsetLow,          // младшее слово смещения
  DWORD dwFileOffsetHigh,         // старшее слово смещения
  DWORD nNumberOfBytesToLockLow,  // младшее слово длины
  DWORD nNumberOfBytesToLockHigh  // старшее слово длины
);
0
28.03.2013, 15:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2013, 15:28
Помогаю со студенческими работами здесь

Как ограничить доступ к сетевой папке в Windows 7 Домашняя Базовая
Было 7 старых машин с ХР про, 5-ть из них заменили на новые системники с Win 7 ДомБаз настроил их...

Заблокировать доступ к некоторым сайтам на windows server 2008?
Добрый день. Есть комп с Windows Server 2008 на нем настроен NAT и DHCP. Предприятие на 100 компов....

Доступ в папке windows по сети
как получить досту к папке виндовс и програм файлс по сети????? чето я пробовал в &quot;Свойствах папки&quot;...

Програмно заблокировать кнопку Win
Вот собственно и весь вопрос как и можно ли вообще???


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru