相关疑难解决方法(0)

Delphi:需要时提示UAC提升

我们需要在运行时将一些设置更改为HKEY_LOCAL_MACHINE.

是否可以在运行时根据需要提示uac提升,或者我是否必须启动第二个提升的流程来执行"脏工作"?

delphi uac elevation

36
推荐指数
3
解决办法
3万
查看次数

在哪里存储程序设置而不是HKEY_LOCAL_MACHINE?

我有一些当前存储在HKEY_LOCAL_MACHINE中的程序设置.由于Vista和锁定用户,一些用户没有HKEY_LOCAL_MACHINE的权限,这些值也不属于HKEY_LOCAL_USER(对于所有用户必须是相同的),存储这些值的最佳替代位置是什么?

大多数设置已存储在数据库中,但在连接到数据库之前,程序需要了解一些设置.理想情况下,我想要一种实现这一点的方法,而无需检查正在运行的操作系统.

这是用Delphi编写的桌面应用程序.

delphi registry

12
推荐指数
2
解决办法
6536
查看次数

尝试在注册表中保存值时出错

使用下面的代码我尝试在注册表的HKEY_LOCAL_MACHINE部分设置一个值,但是我收到错误'无法为.....设置数据'如果我使用HKEY_CURRENT_USER没有问题.

我可能会在这里失踪什么.

(代码不完整,但我认为这是它的重要部分)

type
  TTypWinBits = (Bit32, Bit64);

function WinBits: TTypWinBits;
type
  TIsWow64Process = function(Handle:THandle; var IsWow64 : BOOL) : BOOL; stdcall;
var
  hKernel32 : Integer;
  IsWow64Process : TIsWow64Process;
  IsWow64 : BOOL;
begin
  Result := Bit32;
  hKernel32 := LoadLibrary('kernel32.dll');
  if (hKernel32 = 0) then RaiseLastOSError;
  @IsWow64Process := GetProcAddress(hkernel32, 'IsWow64Process');
  if Assigned(IsWow64Process) then
    begin
      IsWow64 := False;
      if (IsWow64Process(GetCurrentProcess, IsWow64)) then
        Result := Bit64
      else
        RaiseLastOSError;
    end;
  FreeLibrary(hKernel32);
end;

function TFastRegistry.CreateConnection: TRegistry;
begin
  Result := TRegistry.Create;
  try
    case WinBits of
      Bit32: …
Run Code Online (Sandbox Code Playgroud)

delphi registry 32bit-64bit

4
推荐指数
1
解决办法
6535
查看次数

标签 统计

delphi ×3

registry ×2

32bit-64bit ×1

elevation ×1

uac ×1