C\#등록 표 지정 키 동작 가 져 오기
프로그램 이 실행 되 기 전에 읽 고 판단 할 수 있 도록 구체 적 인 유일한 키 값 을 찾 아야 한다.
코드 는 다음 과 같 습 니 다:
class Program
{
private static string _sValue = string.Empty;
static void Main(string[] args)
{
Console.WriteLine(" :");
_sValue = Console.ReadLine();
Console.WriteLine($" 。。。");
var registryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,
Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32); //
int i = 0;
GetKeyNames(registryKey, ref i);
Console.WriteLine($" 。。。");
Console.ReadKey();
}
/// <summary>
///
/// </summary>
/// <param name="subkey"> </param>
/// <param name="i"></param>
private static void GetKeyNames(RegistryKey subkey, ref int i)
{
foreach (var subkey_name in subkey.GetSubKeyNames()) //
{
try
{
using (RegistryKey csubkey = subkey.OpenSubKey(subkey_name))
{
GetValueName(csubkey, ref i);
GetKeyNames(csubkey, ref i);
}
}
catch { }
}
}
/// <summary>
///
/// </summary>
/// <param name="subkey"> </param>
/// <param name="i"></param>
private static void GetValueName(RegistryKey subkey, ref int i)
{
foreach (var name in subkey.GetValueNames()) //
{
var sValue = subkey.GetValue(name) + string.Empty;
if (string.Compare(sValue, string.Format(@"{0}", _sValue, StringComparison.OrdinalIgnoreCase)) == 0)
{
Console.WriteLine(++i + "\t" + subkey.Name);
}
}
}
}
이제 E:\\ArcGIS\Python 27\ArcGISx 6410.2\\python.exe 키 를 찾 습 니 다:결 과 는 다음 과 같다.
추가 지식:C\#레 지 스 트 리 지 를 방문 하여 소프트웨어 의 설치 경 로 를 얻 습 니 다.
절대 다수의 소프트웨어 는 기본적으로 등록 표 에 자신의 이름과 설치 경로 정 보 를 기록한다.
레 지 스 트 에 이 정 보 를 기록 하 는 위 치 는:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
따라서 우 리 는 등록 표 의 이 위치 에 접근 할 수만 있다 면 일부 소프트웨어 의 이름과 설치 경로 정 보 를 얻 을 수 있다.
이 블 로그 에 서 는 C\#레 지 스 트 를 방문 하여 소프트웨어 의 설치 경 로 를 가 져 와 표시 합 니 다.
1 예시 프로그램 메 인 화면 설명
예시 프로그램의 메 인 화면 은 아래 그림 과 같다.
화면 에 있 는 텍스트 상자 에 실행 가능 한 프로그램의 이름 을 입력 하고'경로 가 져 오기'단 추 를 누 르 면 화면의 다음 줄('경로 가 져 오기'단추 가 줄 에 있 는 다음 줄)에 프로그램의 전체 설치 경로 정 보 를 표시 합 니 다.
여기에 입력 한 실행 가능 한 파일 이름 은 Adobe Reader 가 레 지 스 트 에 있 는 이름 이'AcroRd 32.exe'여야 합 니 다.
2 예제 프로그램 전체 코드
using System;
using System.Windows.Forms;
using Microsoft.Win32;
namespace GetSoftWarePathExp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
string softName = textBox1.Text.ToString();
string strKeyName = string.Empty;
string softPath = @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\";
RegistryKey regKey = Registry.LocalMachine;
RegistryKey regSubKey = regKey.OpenSubKey(softPath + softName + ".exe", false);
object objResult = regSubKey.GetValue(strKeyName);
RegistryValueKind regValueKind = regSubKey.GetValueKind(strKeyName);
if (regValueKind == Microsoft.Win32.RegistryValueKind.String)
{
this.label3.Text = objResult.ToString();
}
}
catch
{
this.label3.Text = " , !";
}
}
}
}
메모:인용 추가 필요:using Microsoft.Win 32;3 코드 설명
(1)코드"RegistryKey regKey=Registry.LocalMachine"은 regKey 가 레 지 스 트 메 인 키 HKEY 를 가리 키 게 합 니 다.LOCAL_MACHINE。
(2)코드"RegistryKey regSubKey=regKey.OpenSubKey(softPath+softName+".exe",false)"는 regSubKey 로 하여 금 우리 가 찾 아야 할 레 지 스 트 립 자 건 을 가리 키 게 합 니 다.
(3)코드"object object Result=regSubKey.GetValue(strKeyName)"에서 레 지 스 트 의 키 값 을 가 져 옵 니 다.
(4)코드"RegistryValueKind regValueKind=regSubKey.GetValueKind(strKeyName)"는 레 지 스 트 의 키 형식 을 가 져 옵 니 다.
(5)마지막 출력 에서 얻 은 키 정보.
(6)프로그램 이 잘못 되면"친구,프로그램 경 로 를 가 져 오 는 데 실 패 했 습 니 다!"라 는 안내 메 시 지 를 보 냈 다.
메모:RegistryKey.GetValue 와 RegistryKey.GetValueKind 방법 은 검색 할 값 의 이름 을 표시 하 는 매개 변 수 를 입력 해 야 합 니 다.RegistryKey.GetValue 와 RegistryKey.GetValueKind 방법 에 전 달 된 매개 변수 가 빈 문자열 일 때 이름 없 는 값 을 검색 합 니 다.레 지 스 트 편집기 에 이름 없 는 값 을 표시 할 때,이름 대신 문자열'(Default)'을 표시 합 니 다.
이 예 에서 들 어 오 는 것 은 빈 문자열 입 니 다.검색 소프트웨어 Adobe Reader 의 설치 정 보 를 예 로 들 면 다음 그림 의 첫 번 째 레 지 스 트 정 보 를 얻 을 수 있 습 니 다.이 때 이름 항목 은 문자열'(기본 값)'을 표시 합 니 다.
4 프로그램 실행 결과
(1)Adobe Reader 설치 경로 가 져 오기
"AcroRd 32"를 입력 하고"획득 경로"를 클릭 하면 다음 과 같은 결 과 를 얻 을 수 있 습 니 다.레 지 스 트 에 기 록 된 정보 와 일치 하지 않 습 니까?
(2)chrome 설치 경로 가 져 오기
"chrome"을 입력 하고"획득 경로"를 누 르 면 다음 과 같은 결 과 를 얻 을 수 있 습 니 다.레 지 스 트 에 기 록 된 정보 와 일치 하 는 것 이 아 닙 니까?
5.몇 마디 더 하 세 요.
개발 에 서 는 특정한 프로그램 을 지정 하여 특정한 작업 을 수행 할 때 레 지 스 트 정 보 를 읽 고 프로그램 을 열 수 있 습 니 다.다만 일부 프로그램 에 서 는 이러한 등록 정보 가 존재 하지 않 을 수도 있 습 니 다.이 럴 때 우 리 는 다른 방식 을 취해 야 합 니 다.
이상 의 C\#레 지 스 트 리 지 지정 키 조작 을 가 져 오 는 것 은 바로 편집장 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 하 실 수 있 고 많은 응원 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.