RegistryKey.OpenRemoteBaseKey メソッド
外部のコンピュータ上にある要求されたキーを表す新しい RegistryKey を開きます。
Public Shared Function OpenRemoteBaseKey( _
ByVal hKey As RegistryHive, _ ByVal machineName As String _) As RegistryKey
[C#]
public static RegistryKey OpenRemoteBaseKey(RegistryHivehKey,stringmachineName);
[C++]
public: static RegistryKey* OpenRemoteBaseKey(RegistryHivehKey,String* machineName);
[JScript]
public static function OpenRemoteBaseKey(
hKey : RegistryHive,machineName : String) : RegistryKey;
パラメータ
- hKey
開く HKEY。Win32.RegistryHive クラスにより提供されます。 - machineName
接続先コンピュータ。
戻り値
要求された RegistryKey 。
例外
例外の種類 | 条件 |
---|---|
ArgumentException | hKey が無効であるか、machineName が見つかりません。 |
ArgumentNullException | コンピュータ名が null です。 |
SecurityException | ユーザーに、この操作を実行するための十分なアクセス許可がありません。 |
解説
コンピュータ名として String.Empty が渡される場合は、ローカル コンピュータのレジストリが開いています。要求したキーは外部コンピュータのベース ルート キーである必要があります。このキーは、適切な RegistryHive 値により識別されます。
キーをリモート操作で開くには、サービスとクライアントの両方のコンピュータでリモート キー サービスを実行しており、リモート管理機能が有効である必要があります。
使用例
[Visual Basic, C#, C++] リモート コンピュータでレジストリ キーを開き、そのキーの値を列挙する方法を次のコード例に示します。リモート コンピュータは、リモート レジストリ サービスを実行している必要があります。プログラムを呼び出すときにリモート コンピュータ名をコマンドライン引数として指定します。
Imports Microsoft.VisualBasic
Imports System
Imports System.IO
Imports System.Security.Permissions
Imports Microsoft.Win32
<Assembly: RegistryPermissionAttribute( _
SecurityAction.RequestMinimum, _
Read := "HKEY_CURRENT_USER\Environment")>
<Assembly: SecurityPermissionAttribute( _
SecurityAction.RequestMinimum, UnmanagedCode := True)>
Public Class RemoteKey
Shared Sub Main(commandLineArgs As String())
Dim environmentKey As RegistryKey
' Check that an argument was specified when the
' program was invoked.
If commandLineArgs.Length = 0 Then
Console.WriteLine("Error: The name of the remote " & _
"computer must be specified as input on the " & _
"command line.")
Return
End If
Try
' Open HKEY_CURRENT_USER\Environment on a remote computer.
environmentKey = RegistryKey.OpenRemoteBaseKey( _
RegistryHive.CurrentUser, _
commandLineArgs(0)).OpenSubKey("Environment")
Catch ex As IOException
Console.WriteLine("{0}: {1}", _
ex.GetType().Name, ex.Message)
Return
End Try
' Print the values.
Console.WriteLine("\nThere are {0} values For {1}.", _
environmentKey.ValueCount.ToString(), environmentKey.Name)
For Each valueName As String In environmentKey.GetValueNames()
Console.WriteLine("{0,-20}: {1}", valueName, _
environmentKey.GetValue(valueName).ToString())
Next
' Close the registry key.
environmentKey.Close()
End Sub
End Class
[C#]
using System;
using System.IO;
using System.Security.Permissions;
using Microsoft.Win32;
[assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum,
Read = @"HKEY_CURRENT_USER\Environment")]
[assembly: SecurityPermissionAttribute(SecurityAction.RequestMinimum,
UnmanagedCode = true)]
class RemoteKey
{
static void Main(string[] args)
{
RegistryKey environmentKey;
string remoteName;
// Check that an argument was specified when the
// program was invoked.
if(args.Length == 0)
{
Console.WriteLine("Error: The name of the remote " +
"computer must be specified when the program is " +
"invoked.");
return;
}
else
{
remoteName = args[0];
}
try
{
// Open HKEY_CURRENT_USER\Environment
// on a remote computer.
environmentKey = RegistryKey.OpenRemoteBaseKey(
RegistryHive.CurrentUser, remoteName).OpenSubKey(
"Environment");
}
catch(IOException e)
{
Console.WriteLine("{0}: {1}",
e.GetType().Name, e.Message);
return;
}
// Print the values.
Console.WriteLine("\nThere are {0} values for {1}.",
environmentKey.ValueCount.ToString(),
environmentKey.Name);
foreach(string valueName in environmentKey.GetValueNames())
{
Console.WriteLine("{0,-20}: {1}", valueName,
environmentKey.GetValue(valueName).ToString());
}
// Close the registry key.
environmentKey.Close();
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
using namespace System::IO;
using namespace System::Security::Permissions;
using namespace Microsoft::Win32;
[assembly: RegistryPermissionAttribute(SecurityAction::RequestMinimum,
Read = "HKEY_CURRENT_USER\\Environment")];
[assembly: SecurityPermissionAttribute(SecurityAction::RequestMinimum,
UnmanagedCode = true)];
void main(int argc, char* argv[])
{
RegistryKey* environmentKey;
// Check that an argument was specified when the
// program was invoked.
if(argc == 1)
{
Console::WriteLine(S"Error: The name of the remote computer "
S"must be specified as input on the command line.");
return;
}
try
{
// Open HKEY_CURRENT_USER\Environment on a remote computer.
environmentKey = RegistryKey::OpenRemoteBaseKey(
RegistryHive::CurrentUser,
argv[1])->OpenSubKey(S"Environment");
}
catch(IOException* e)
{
Console::WriteLine("{0}: {1}",
e->GetType()->Name, e->Message);
return;
}
// Print the values.
Console::WriteLine(S"\nThere are {0} values for {1}.",
environmentKey->ValueCount.ToString(), environmentKey->Name);
String* valueNames __gc [] = environmentKey->GetValueNames();
for(int i = 0; i < environmentKey->ValueCount; i++)
{
Console::WriteLine("{0,-20}: {1}", valueNames[i],
environmentKey->GetValue(valueNames[i])->ToString());
}
// Close the registry key.
environmentKey->Close();
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
.NET Framework セキュリティ:
- SecurityPermission (アンマネージ コード内でリモート レジストリ キーにアクセスするために必要なアクセス許可) UnmanagedCode (関連する列挙体)
参照
RegistryKey クラス | RegistryKey メンバ | Microsoft.Win32 名前空間 | RegistryHive | OpenSubKey