Конференция "WinAPI" » Почему такой код в Висте не работает а в XP работает? [D5]
 
  • vopros (15.04.08 14:36) [0]
    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;



    Или подскажите плиз, как егов Висте сделать работоспособным?
  • tesseract © (15.04.08 14:53) [1]

    > Или подскажите плиз, как егов Висте сделать работоспособным?


    Виста вообще по другому работает.
  • vopros (15.04.08 15:36) [2]
    Как определить в висте откуда программа запустилась.
    То бишь файл создаеться...но создаеться в учетке пользователя из под которой она запустилась..
  • lapslap (15.04.08 15:36) [3]
    regedit под вистой требует для запуска админские привилегии, и при включеном уаке, если ваше приложение не под админом, код невыполнится :)

    выход: добавьте хороший манифест.
  • Anatoly Podgoretsky © (15.04.08 15:45) [4]
    > vopros  (15.04.2008 14:36:00)  [0]

    Как по твоему для чего у тебя тут RaiseLastWin32Error стоит, для красоты?
    Будь добр озвучить ошибку.
  • tesseract © (15.04.08 16:34) [5]

    > Как определить в висте откуда программа запустилась.


    Твоя ? Так же как и обычно - Apllication.Exename или ParamStr(0).
  • В.В. Дельфин (18.04.08 07:59) [6]
    To lapslap

    >Что такое манифест?
    >Что такое манифест, и какую роль он играет в выборе версии 6.0 >библиотеки comctl32.dll для моего приложения? Манифест - XML документ >который должен быть подлинкован в ресурсы вашего приложения. Обычно >ресурсы используются для хранения таких вещей как картинки, иконки и >курсоры мыши.

    Как манифест повлияет на выполнение Regedit? Или я пардон ошибаюсь?
  • Плохиш © (18.04.08 12:33) [7]

    > if
    >   ShellExecute(Handle, 'open', 'regedit.exe',
    >  PChar(Format('/e "%s" "%s"', [FileName, Key])),
    >  '', SW_SHOWDEFAULT)  ;<= 32
    >  then //если ошибка, то возвращаемый код <=32

    А на каком языке ви пытаетесь кодить?
  • Игорь Шевченко © (18.04.08 16:30) [8]

    > RaiseLastWin32Error();
    >  Application.terminate;


    какая-то из двух строчек явно лишняя
  • zensan © (19.04.08 23:43) [9]
    Virube User Access Control i vse dela... v User Accounts..
  • Eraser © (20.04.08 01:11) [10]
    вообще, если у регедита манифест, терубющий админские привелегии, то данный код (если в нем нет глупых ошибок) должен вызвать диалог поднятия привелегий.
    вообще тут все подробно
    http://www.codeproject.com/KB/vista-security/UAC__The_Definitive_Guide.aspx

    но повторюсь - должно работать просто через ShellExecute.
 
Конференция "WinAPI" » Почему такой код в Висте не работает а в XP работает? [D5]
Есть новые Нет новых   [134432   +20][b:0][p:0.001]