Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];

Вниз

Как в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
1-236
SlavaLamer
2002-03-20 19:48
2002.04.01
Реестр


6-266
Hecker
2002-01-19 06:15
2002.04.01
Кто знает как?


7-335
Filat
2001-12-19 15:45
2002.04.01
Как переделать или втавить программу с ASM на Дельфи - цифровой вольтметр.


4-342
kiber
2002-01-31 01:17
2002.04.01
win api


14-305
Lord Vader
2002-02-20 04:59
2002.04.01
RUNDLL32.EXE - Перезагрузить компьютер в режиме MS-DOS





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский