Вопрос о "пользователе" System

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _nic, 28 Sep 2007.

  1. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Возможно ли приложние неявляющиеся сервисом добавить в автозагрузку что бы оно загружалось от имени System ? Если нет то может возможно получить системные права(при условии что приложение запущенно от имени пользователя с административными правами)уже после загрузки?
     
  2. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    это сервис...
     
    3 people like this.
  3. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Какой то расплывчатый ответ :confused: Или это означает что кроме написания сервиса альтернативы нет?
     
  4. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    Надо было разработчикам назвать этого "пользователя" не SYSTEM
    а WINDOWS_SYSTEM_NOT_A_USER - что б некоторые кодеры не спрашивали "как запустится от юзера system" + что бы другие кодеры им не отвечали "это сервис".
    Топикстартер, как думаешь, если штук десять приложений работают с пометкой систем - можно ли ещё одно такое запустить?
    Сюда не надо приплетать администратора системы и нулевое кольцо.

    Если ты работаешь под админом - у тебя и так все права на всё есть, хочешь драйвер поставь, хочешь ZwOpenSection на physical memory сделай, хочешь - любой процесс открой. Чтоб системные процессы открывать -
    Code:
    int LoadSeDebugPrivilege( void )
    {
    	HANDLE hToken;
    	LUID Val;
    	TOKEN_PRIVILEGES token_priv;
    
    	if (!_OpenProcessToken( _GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken )) return (_GetLastError());
    
    	if (!_LookupPrivilegeValue( NULL, SE_DEBUG_NAME, &Val )) return (_GetLastError());
    
    	token_priv.PrivilegeCount = 1;
    	token_priv.Privileges[0].Luid = Val;
    	token_priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    
    	if (!_AdjustTokenPrivileges( hToken, FALSE, &token_priv, sizeof( token_priv ), NULL, NULL )) return (_GetLastError());
    
    	_CloseHandle( hToken );
    
    	return 1;
    }
    
    (из илюжона)

    Если надо поставить меточку "system" в окошке task manager (ctrl+alt+del), то (я конечно не могу сказать на 100%), но придется писать дров и копаться в потрохах винды (относительно security-дескрипторов, прав доступа, хэндлов, структур описателей процесса и тп), рискуя навсегда стать Great'ом : )
     
    #4 KEZ, 29 Sep 2007
    Last edited: 29 Sep 2007
    4 people like this.