0

어떤 시점에서 컴퓨터에 로그온 한 각 사용자가 자신의 HKEY_USERS 디렉토리에있을 수있는 데이터를 찾기 위해 PowerShell 모듈을 작성했습니다.PowerShell에서 모든 SID의 HKEY_Users 파일을 추출하려면 어떻게해야합니까?

dir HKU\<STRING VARIABLE HOLDING SID>\Software\MyApp\Mydesireddata

내가 통해 루프 것을 방지 할 수있는 방법이 있나요 : 내 최초의 생각과 같이 모든 폴더를 다음 루프, HKEY_USERS 마운트 문자열 변수에 각 사용자의 SID를 저장하는 방법을 찾아하는 것이 었습니다 SID는 (나는 그들을 미리 알지 못하기 때문에), 그리고 그 SID를 기억하면서 시스템상의 각 SID로부터 그 파일 정보를 추출한다.

편집 : 다음은 각 사용자 별 하위 키를 검색 할 수

enter image description here

+1

이 질문은 의미가 없습니다. 레지스트리에 파일이 없습니다. –

+0

HKEY_USERS의 각 디렉토리에서 추출하려고하는 데이터가 있습니다. HKEY_USERS를 탑재하면 PowerShell에서 해당 데이터에 액세스 할 수 있습니다. – AlwaysQuestioning

+0

레지스트리 키 이름은 문자 그대로 'mydesiredfile.txt'입니까? 'regedit'에 샘플 레지스트리 키의 스크린 샷을 게시 할 수 있습니까? –

답변

3

사용 Get-ChildItem 내가 regedit를 사용하여 각 사용자의 SID에서 추출하기 위해 노력하고있어 키의 예 (vncviewer를의 EulaAccepted) 일 :

$UserHives = Get-ChildItem Registry::HKEY_USERS\ |Where-Object {$_.Name -match '^HKEY_USERS\\S-1-5-21-[\d\-]+$'} 

그런 다음 각 항목 전체를 반복하고 원하는 레지스트리 값을 검색 :

foreach($Hive in $UserHives) 
{ 
    # Construct path from base key 
    $Path = Join-Path $Hive.PSPath "SOFTWARE\MyApp\DataKey" 

    # Attempt to retrieve Item property 
    $Item = Get-ItemProperty -Path $Path -Name ValueName -ErrorAction SilentlyContinue 

    # Check if item property was there or not  
    if($Item) 
    { 
     $Item.ValueName 
    } 
    else 
    { 
     # doesn't exist 
    } 
} 
+0

우수. 이것은 의도 한대로 작동하는 것 같습니다. 답변을 받기 전에 효율성을 위해 루프없이이 작업을 수행 할 수있는 방법이 있습니까? 모든 SID 폴더에서 동일한 ItemProperty를 찾고 있는데,이 SID 폴더의 상위 디렉토리 수준에서 하나의 트래버스를 수행 할 수 있는지 궁금합니다. – AlwaysQuestioning