1

真正的问题和问题是:如何在 Windows 7 的注册表配置单元“HKEY_CLASSES_ROOT”中添加键?

我知道在哪里创建密钥,但只有当我以管理员身份运行程序时才能实现。或手动... :) 否则,会出现错误消息,说明无法添加/创建密钥。

如果没有管理员权限,这可能吗?

该键的位置:“HKEY_CLASSES_ROOT\Applications\MyAppName.exe\shell\open\comand”

我用来在注册表中编写的代码:

procedure TForm1.Button1Click(Sender: TObject);
var 
   Reg: TRegistry;
   appfilename: string;
begin
appfilename:= application.ExeName;
reg := TRegistry.Create;
reg.RootKey := HKEY_CLASSES_ROOT;
if not reg.KeyExists('Applications\MyAppName.exe\shell\open\command') then
begin
 if reg.OpenKey('Applications\MyAppName.exe\shell\open\command', True) then
 begin
  reg.WriteString('', '"' + appfilename + '" "%1"');
  reg.CloseKey;
 end;
end;

结尾;

4

2 回答 2

3

您需要在 中输入密钥HKEY_CURRENT_USER\Software\Classes。这将被HKEY_CLASSES_ROOTWindows 复制到。

于 2013-06-11T21:48:27.383 回答
0

我相信这对某人有用。这是在 Windows 7 系统菜单的“打开方式...”部分添加您的应用程序的方法(我没有在其他操作系统上检查这一点)。感谢@John Clement,这是答案:

procedure TForm1.AddAppInOpenWith;
var Reg: TRegistry;
         appfilename: string;
begin
  appfilename:= application.ExeName;
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_USER;
  try
  if not reg.KeyExists('Software\Classes\Applications\AppName.exe\shell\open\command') then
  begin
    if reg.OpenKey('Software\Classes\Applications\AppName.exe\shell\open\command', True) then
    begin
      reg.WriteString('', '"' + appfilename + '" "%1"');
      reg.CloseKey;
    end;
  end;
  finally Reg.Free;
  end;
end;
于 2013-06-13T12:58:27.467 回答