Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.01;
Скачать: CL | DM;

Вниз

Как в NT-ях разрешить программе редактировать реестр текущего пользователя?   Найти похожие ветки 

 
Nomad   (2001-12-29 15:14) [0]

сабж. но с двумя "но".. пользователю запрещено редактирование реестра.. а изменять надо раздел HKCU\....\Policies.
т.е. у нужно выдать запрос на пароль администратора.. но если запускать всю программу с правами адм. - HKCU - уже будет указывать на него. Тогда - как найти нужного юзера в HKEY_USERS? Да еще и под XP? там куча юзеров может быть подключена одновременно..


 
Tosov ©   (2001-12-29 16:07) [1]

О какой ветке иднт речь? Все, что в HKCU доступно любому юзеру (каждому свое естественно :)). Если в этом есть сомнения - запусти regedt32 и просмотри разрешения (+ поставь правильные).
Найти юзера можно по его SID (вроде это он и есть в HKEY_USERS)..


 
Nomad   (2001-12-31 15:44) [2]

Не все так просто. Вообще вопрос идет о Win XP. Пользователю ставятся права guest и по-умолчанию нет ему доступа вообще на редактирование реестра..
Как я понимаю эти разрешения (которые ставятся в regedt32) менять на ходу можно только с привилегиями администратора.
Тогда, легче уже будет заставить программу выполнятся с правами администратора (средствами винды), а потом редактировать ветку HKEY_USERS. Для этого надо, уже имея права администратора, узнать SID текущего пользователя, но в XP их может быть много. Т.е. нужен тот, который запустил процесс..


 
Nomad   (2001-12-31 16:15) [3]

Хе. в Win XP regedt32 вызывает regedit.. Пробовал запустить версию от 2000-й - работает, но не показывает разрешения и не дает править. Вывод - под XP прийдется лезть через HKEY_USERS.


 
Nomad   (2001-12-31 18:30) [4]

Мда.. кто чем занят в новогоднюю ночь..

Написал я процедурки доставания SIDа.. Может, кому пригодится..


function Sid2Text(ps:PSID):string;

var

psia:PSIDIDENTIFIERAUTHORITY;
dwSubAuthorities,i:word;
dwSidRev:word;

begin

if IsValidSid(ps) then

begin
psia:= GetSidIdentifierAuthority(ps);

dwSubAuthorities:=GetSidSubAuthorityCount(ps)^;
dwSidRev:=1;

result:="S-"+inttostr(dwSidRev);
with psia^ do
if (value[0]<>0) and (value[1]<>0) then
for i:=0 to 5 do result:=result+inttostr(value[i]) else
result:=result+"-"+inttostr(Value[5]+(Value[4] shl 8)+(Value[3] shl 16)+(Value[2] shl 24));

for i:=0 to dwSubAuthorities-1 do
result:=result+"-"+inttostr(GetSidSubAuthority( ps, i )^);

end;
end;

Procedure GetCurrentSid(var S:PSID);


var

ReferencedDomain:LPSTR;

cbSid,cbReferencedDomain:DWORD;
peUse:SID_NAME_USE;
begin
cbSID:=128;
cbReferencedDomain:=16;
GetMem(S,cbsid);
GetMem(ReferencedDomain,cbReferencedDomain);

LookupAccountName("","User",S,cbSID,ReferencedDomain,cbReferencedDomain,peUse);

FreeMem(ReferencedDomain);

end;

var
sid: PSID;

begin
getcurrentsid(sid);
MessageDlg(sid2text(sid),mtInformation,[mbOK],0);
if sid<>nil then FreeMem(sid);
end.


Сейчас ищу, как корректно средствами системы запустить программу с запросом пароля администратора.


 
Tosov ©   (2001-12-31 19:09) [5]

Сейчас ищу, как корректно средствами системы запустить программу с запросом пароля администратора.

CreateProcessWithLogonW


 
Nomad   (2001-12-31 19:15) [6]

Вот вот. По нему и ищу описаниеце.. если просто запускать runas"ом - некрасиво выходит, а передавать консольному приложению пароль из программы - и дырок много и, извиняюсь, через задницу.


 
Nomad   (2001-12-31 19:46) [7]

Remarks
CreateProcessWithLogonW does not load the specified user"s profile into the HKEY_USERS registry key. This means that access to information in the HKEY_CURRENT_USER registry key may not produce results consistent with a normal interactive logon.


Если я правильно понимаю, это должно значить, что с SIDом можно было и не возиться.. бред..


 
Tosov ©   (2002-01-02 00:05) [8]

Это ты намекаешь на то, что HKCU будет от старого юзера?



Страницы: 1 вся ветка

Текущий архив: 2002.04.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
1-184
Юрий Федоров
2002-03-19 18:03
2002.04.01
Общее адресное пространство для двух процессов


3-31
KMM
2002-03-05 11:07
2002.04.01
Уважаемые Мастера, помогите с


1-128
oomneeq
2002-03-21 12:26
2002.04.01
Как управлять включением TD32 Debug Info


1-95
Nick_Torshin
2002-03-21 13:06
2002.04.01
Передача string из Delphi в VC++


1-176
Aleksandr
2002-03-19 15:30
2002.04.01
Как установить курсор в конце текста строки?