Конференция "WinAPI" » Реестр и UAC
 
  • Piroxyline © (22.01.11 18:32) [0]
    Есть нужда запихать в HKCL ветку, но нет возможности сделать это в семерке без прав администратора. В-общем, не могу понять, как сделать локальное повышение прав для возможности ключа в реестр, чтобы высветилось окошко UAC.
  • Smile (22.01.11 18:36) [1]
    Мужичёк, ты бы, если не затруднит, расшифровал бы нам (или мне) неучам, что означает ветка HKCL
  • Piroxyline © (22.01.11 18:52) [2]
    Ну ошибся, с кем не бывает? HKCR - HKEY_CLASSES_ROOT
  • P (22.01.11 19:31) [3]

    uses ShellAPI;

    procedure TForm1.Button1Click(Sender: TObject);
    var
    ShellExecuteInfo: TShellExecuteInfo;
    begin
     Hide;
     ShellExecuteInfo.cbSize:= SizeOf(TShellExecuteInfo);
     ShellExecuteInfo.fMask:= 0;
     ShellExecuteInfo.Wnd:= 0;
     ShellExecuteInfo.lpVerb:= 'runas';
     ShellExecuteInfo.lpFile:= PAnsiChar(Application.ExeName);
     ShellExecuteInfo.lpParameters:= nil;
     ShellExecuteInfo.lpDirectory:= nil;
     ShellExecuteInfo.nShow:= SW_SHOWNORMAL;
     if ShellExecuteEx(@ShellExecuteInfo) then
       Close;
     Show;
    end;

  • Gu (22.01.11 21:09) [4]
    а без закрытия проги никак? т.е. чтобы права только на текущую операцию повышались. в инете есть от боженко метод с ком объектом и длл, но както не хочется с этим связываться.

    или можно как нибудь простую длл подцепить с такими правами?
  • P (23.01.11 05:19) [5]

    > Gu   (22.01.11 21:09) [4]
    >
    > а без закрытия проги никак?


    Так не закрывай, кто тебя заставляет

    Запускаешь второй экземпляр программы с параметрами или любой другой свой exe

    ShellExecuteInfo.lpParameters:= 'bla bla bla';

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Application.ShowMainForm:= False;
      GetCommandLine - разбираем эти самые параметры, если bla bla bla что то делаем и закрываем программу
      Close
    end;
  • Piroxyline © (23.01.11 11:29) [6]
    Не, нужно без закрытия программы. На крайняк можно написать манифест, но хотелось бы без подтверждения прав при каждом запуске, даже если права администратора по сути не понадобятся.
  • Gu (24.01.11 00:22) [7]
    манифест сразу права запросит на всю сессию проги, проще тогда галку в свойствах проги ставить "запускать от админа". вариант с параметрами интересный, но было бы гораздо удобней, чтобы при проведении операции окно само вылазило, в случае необходимости.
    т.е. допустим копируем под уак в корень диска ц файлик, при начале копирования окошко бы вылезло о повышении прав. в манифесте же есть параметр asInvoker, но он не срабатывает, если манифест прикручиваешь. может ошибся где?

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
     <assemblyIdentity
       type="win32"
       name="GuFn"
       processorArchitecture="*"/>
     <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
       <security>
         <requestedPrivileges>
             <requestedExecutionLevel level="asInvoker"/>
           </requestedPrivileges>
       </security>
     </trustInfo>
    </assembly>
  • Gu (24.01.11 00:24) [8]
    вот если вот этот прикрутить, то права админа запрашиваются при старте, но это не гуд, пользователь без прав не сможет запустить

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
     <assemblyIdentity
       type="win32"
       name="GuFn"
       version="0.1.0.0"
       processorArchitecture="*"/>
     <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
       <security>
         <requestedPrivileges>
           <requestedExecutionLevel
             level="requireAdministrator"
             uiAccess="false"/>
           </requestedPrivileges>
       </security>
     </trustInfo>
    </assembly>
  • Keeper-Volok © (30.01.11 17:52) [9]
    > в манифесте же есть параметр asInvoker, но он не срабатывает

    "asInvoker" говорит системе, что надо наследовать права запустившего приложения.
    Параметров "Запросить когда надо" для манифеста нет, по крайней мере документированных.
  • Styx (30.01.11 21:29) [10]
    А вот Far Manager новый вроде так и делает - когда у него прав не хватает файлик записать, он их запрашивает. Сорцы вроде открытые.
 
Конференция "WinAPI" » Реестр и UAC
Есть новые Нет новых   [134427   +38][b:0][p:0.001]