![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему такой код в Висте не работает а в XP работает? [D5]
vopros © (2008-04-15 14:36:00)
FileName := 'expreg.reg'; //заполнить именем файла (расширение указывать)
Key := 'HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\';
if
ShellExecute(Handle, 'open', 'regedit.exe',
PChar(Format('/e "%s" "%s"', [FileName, Key])),
'', SW_SHOWDEFAULT) ;<= 32
then //если ошибка, то возвращаемый код <=32
RaiseLastWin32Error();
Application.terminate;
end;
Или подскажите плиз, как егов Висте сделать работоспособным?
Eraser (2008-04-20 01:11:00) [1]вообще, если у регедита манифест, терубющий админские привелегии, то данный код (если в нем нет глупых ошибок) должен вызвать диалог поднятия привелегий.
вообще тут все подробно
http://www.codeproject.com/KB/vista-security/UAC__The_Definitive_Guide.aspx
но повторюсь - должно работать просто через ShellExecute.
zensan (2008-04-19 23:43:00) [2]Virube User Access Control i vse dela... v User Accounts..
Игорь Шевченко (2008-04-18 16:30:00) [3]
> RaiseLastWin32Error();
> Application.terminate;
какая-то из двух строчек явно лишняя
Плохиш (2008-04-18 12:33:00) [4]
> if
> ShellExecute(Handle, 'open', 'regedit.exe',
> PChar(Format('/e "%s" "%s"', [FileName, Key])),
> '', SW_SHOWDEFAULT) ; <= 32
> then //если ошибка, то возвращаемый код <=32
А на каком языке ви пытаетесь кодить?
В.В. Дельфин (2008-04-18 07:59:00) [5]To lapslap
>Что такое манифест?
>Что такое манифест, и какую роль он играет в выборе версии 6.0 >библиотеки comctl32.dll для моего приложения? Манифест - XML документ >который должен быть подлинкован в ресурсы вашего приложения. Обычно >ресурсы используются для хранения таких вещей как картинки, иконки и >курсоры мыши.
Как манифест повлияет на выполнение Regedit? Или я пардон ошибаюсь?
tesseract (2008-04-15 16:34:00) [6]
> Как определить в висте откуда программа запустилась.
Твоя ? Так же как и обычно - Apllication.Exename или ParamStr(0).
Anatoly Podgoretsky (2008-04-15 15:45:00) [7]> vopros (15.04.2008 14:36:00) [0]
Как по твоему для чего у тебя тут RaiseLastWin32Error стоит, для красоты?
Будь добр озвучить ошибку.
vopros (2008-04-15 15:36:00) [8]Как определить в висте откуда программа запустилась.
То бишь файл создаеться...но создаеться в учетке пользователя из под которой она запустилась..
lapslap (2008-04-15 15:36:00) [9]regedit под вистой требует для запуска админские привилегии, и при включеном уаке, если ваше приложение не под админом, код невыполнится :)
выход: добавьте хороший манифест.
tesseract (2008-04-15 14:53:00) [10]
> Или подскажите плиз, как егов Висте сделать работоспособным?
Виста вообще по другому работает.