2014-01-21 3 views
2

Я хотел бы знать, как я могу установить разрешения для файла Windows?
Что-то вроде chmod(), а это окна.Настройка разрешений созданного файла

Например:

Создайте файл example.exe и установить права доступа таким образом, что только владелец этого файла может выполнить его.

Я читал, что есть ACL API для c где-то, но я не совсем понял.

+0

http://msdn.microsoft.com/en-us/library/windows/desktop/aa446654%28v=vs.85%29.aspx – deviantfan

ответ

5

Это намного больше работы, чем chmod!

Я освободился от создания файла ПОСЛЕ создания дескриптора безопасности - это безопаснее. Если вы делаете что-то наоборот (сначала создайте файл), значит, короткое время, когда требуемый доступ не установлен.

Попробуйте это:

#include <windows.h> 
#include <AclAPI.h> 
#include <Lmcons.h> 

int main() 
{ 
    SECURITY_DESCRIPTOR sd; 
    EXPLICIT_ACCESS ea[1]; 
    PACL pDacl; 
    SECURITY_ATTRIBUTES sa; 

    TCHAR UserBuffer[UNLEN+1]; 
    DWORD ulen = UNLEN; 
    GetUserName(UserBuffer, &ulen); 

    InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION); 

    BuildExplicitAccessWithName(&ea[0], UserBuffer, GENERIC_EXECUTE, 
         SET_ACCESS, NO_INHERITANCE); 

    SetEntriesInAcl(1, ea, NULL, &pDacl); 
    SetSecurityDescriptorDacl(&sd, TRUE, pDacl, FALSE); 

    sa.nLength = sizeof(SECURITY_ATTRIBUTES); 
    sa.bInheritHandle = FALSE; 
    sa.lpSecurityDescriptor = &sd; 

    CreateFileA("c:\\temp\\example.exe", GENERIC_EXECUTE, 0, &sa, 
     CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0); 

    return 0; 
} 
Смежные вопросы