Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

API OpenFile

1.9K
26 сентября 2008 года
tva94
115 / / 01.05.2007
подскажите плз, как с помощью API функции OpenFile закрыть доступ на чтение/запись к файлу/папке. Когда-то находил и задавал вопрос как блокировать диски и сидюк, дык потерял примеры.
341
27 сентября 2008 года
Der Meister
874 / / 21.12.2007
Передать 0 в качестве параметра dwShareMode?
1.9K
27 сентября 2008 года
tva94
115 / / 01.05.2007
А можно показать кодом(DLLImport и пример вызова), а то уже забыл как это делать, а мои ссылки на сайты недавно накрылись.
341
27 сентября 2008 года
Der Meister
874 / / 21.12.2007
 
Код:
public const UInt32 GENERIC_READ = 0x80000000;
public const UInt32 GENERIC_WRITE = 0x40000000;
public const UInt32 OPEN_EXISTING = 3;
public const UInt32 FILE_ATTRIBUTE_NORMAL = 0x80;

[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr CreateFile(string FileName, UInt32 DesiredAccess, UInt32 ShareMode, IntPtr SecAttrs, UInt32 CreationDisposition, UInt32 FlagsAndAttributes, IntPtr TemplateFile);

IntPtr hFile = CreateFile("filename.ext", GENERIC_READ, 0, IntPtr.Zero, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, IntPtr.Zero);
1.9K
14 октября 2008 года
tva94
115 / / 01.05.2007
Чавось я могу через проводник туда зайти. Знач это не то. Тогда вопрос ставлю так: как запретить чтение/запись в файл/папку временно.
1.9K
15 октября 2008 года
tva94
115 / / 01.05.2007
Ну чтож, я нашел:

Код:
[DllImport(
"kernel32.dll",
SetLastError = true,
EntryPoint = "CreateFileA"
)]
        internal static extern IntPtr CreateFile(
        String filename,
        UInt32 desiredAccess,
        UInt32 shareMode,
        IntPtr attributes, // Really, this is the SECURITY_ATTRIBUTES pointer
        UInt32 creationDisposition,
        UInt32 flagsAndAttributes,
        IntPtr templateFile
        );
        private const uint FILE_FLAG_BACKUP_SEMANTICS = 0x02000000;
        private const uint FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000;
        const uint FILE_FLAG_POSIX_SEMANTICS = 0x01000000;

        private void button3_Click(object sender, EventArgs e)
        {
            IntPtr h = CreateFile(@"E:\test", GENERIC_READ, 0, IntPtr.Zero, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_POSIX_SEMANTICS, IntPtr.Zero);
            MessageBox.Show(h.ToString());
            CloseHandle(h);


        }


Теперь такой вопрос - как мне освободить файл/папку, если они уже используються
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог