Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

NT4で保護されたレジストリへのアクセ ス方法

9 views
Skip to first unread message

Takao Shudo

unread,
Mar 20, 2000, 3:00:00 AM3/20/00
to
自作アプリからNT4で保護されたレジストリへ書き込みを行おうと
しているのですが、方法がわかりません。

やりたいのは、HKLM\SYSTEM\CurrentControlSet\Enum\NewKey
というように保護されたレジストリ以下に新しいKeyを作ることです。

RegSetKeySecurity などを使えばいいのだろうか?とも思うのですが
うまく行きません。

情報をお持ちの方がいらっしゃいましたら、サンプルコードを示して
頂けませんでしょうか?

RegEdt32でパーミッションを変更すれば書き込めるので、自作アプリ
からでも可能だとは思うのですが・・・

よろしくお願いします。


N_Uchida

unread,
Mar 21, 2000, 3:00:00 AM3/21/00
to
本から抜粋したコードを記述しますが、
セキュリティについて勉強しないと、むづかしいと思います。
私もよく分かっておりません(笑)。すいません!

本の名前:Win32システムサービスプログラミング
発行社名:(株)プレンティスホール
値段:¥5631+税金


下記の処理は
”guest”というユーザーだけがアクセス可能なレジストリキーを
作成するコードだそうです。


// regsec.cpp

#include <windows.h>
#include <iostream.h>

SECURITY_ATTRIBUTES sa;
SECURITY_DESCRIPTOR sd;
BYTE aclBuffer[1024];
PACL pacl=(PACL)&aclBuffer;
BYTE sidBuffer[100];
PSID psid=(PSID) &sidBuffer;
DWORD sidBufferSize = 100;
char domainBuffer[80];
DWORD domainBufferSize = 80;
SID_NAME_USE snu;
LONG result;
HKEY regKey;
DWORD disposition;

void main(void)
{
InitializeSecurityDescriptor(&sd,
SECURITY_DESCRIPTOR_REVISION);
InitializeAcl(pacl, 1024, ACL_REVISION);
LookupAccountName(0, "guest", psid,
&sidBufferSize, domainBuffer,
&domainBufferSize, &snu);
AddAccessAllowedAce(pacl, ACL_REVISION,
GENERIC_READ, psid);
SetSecurityDescriptorDacl(&sd, TRUE, pacl,
FALSE);

sa.nLength= sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = FALSE;
sa.lpSecurityDescriptor = &sd;

result = RegCreateKeyEx(HKEY_CURRENT_USER,
"junk", 0, 0, REG_OPTION_VOLATILE,
KEY_ALL_ACCESS, &sa, &regKey,
&disposition);
cout << result << endl;
RegCloseKey(regKey);
}

0 new messages