Skip to content

EliahKagan/pfdirs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pfdirs - Find Program Files folders in several ways

This is Rust program that reports information from multiple sources about where program files directories are located on a Windows system.

License

0BSD

Sources of information

Details on the source of information, including on subtleties of availability across process and system architectures, are provided in the code on the four report_* functions that access them. This is a brief summary of the functions:

Examples

A 32-bit (x86) process running on a 64-bit (x64) system

C:\Users\ek\source\repos\pfdirs [main ≡]> cargo run --target=i686-pc-windows-msvc
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.07s
     Running `target\i686-pc-windows-msvc\debug\pfdirs.exe`
Relevant environment variables:

  ProgramFiles       C:\Program Files (x86)
  ProgramFiles(Arm)  [environment variable not found]
  ProgramFiles(x86)  C:\Program Files (x86)
  ProgramW6432       C:\Program Files

Relevant known folders:

  FOLDERID_ProgramFiles      C:\Program Files (x86)
  FOLDERID_ProgramFilesX64   [The system cannot find the file specified. (0x80070002)]
  FOLDERID_ProgramFilesX86   C:\Program Files (x86)
  FOLDERID_UserProgramFiles  C:\Users\ek\AppData\Local\Programs

Relevant CSIDLs:

  CSIDL_PROGRAM_FILES     C:\Program Files (x86)
  CSIDL_PROGRAM_FILESX86  C:\Program Files (x86)

Relevant registry keys - with default view:

  ProgramFilesDir        C:\Program Files (x86)
  ProgramFilesDir (Arm)  [The system cannot find the file specified. (os error 2)]
  ProgramFilesDir (x86)  C:\Program Files (x86)
  ProgramW6432Dir        C:\Program Files

Relevant registry keys - with KEY_WOW64_32KEY:

  ProgramFilesDir        C:\Program Files (x86)
  ProgramFilesDir (Arm)  [The system cannot find the file specified. (os error 2)]
  ProgramFilesDir (x86)  C:\Program Files (x86)
  ProgramW6432Dir        C:\Program Files

Relevant registry keys - with KEY_WOW64_64KEY:

  ProgramFilesDir        C:\Program Files
  ProgramFilesDir (Arm)  [The system cannot find the file specified. (os error 2)]
  ProgramFilesDir (x86)  C:\Program Files (x86)
  ProgramW6432Dir        C:\Program Files

This shows, among other things, that, as documented, the ProgramFilesX64 known folder information is not available to a 32-bit process, even when it is running on a 64-bit system.

An ARM64 process running natively on an ARM64 system

PS C:\Users\pickens\repos\pfdirs> cargo run
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.06s
     Running `target\debug\pfdirs.exe`
Relevant environment variables:

  ProgramFiles       C:\Program Files
  ProgramFiles(Arm)  C:\Program Files (Arm)
  ProgramFiles(x86)  C:\Program Files (x86)
  ProgramW6432       C:\Program Files

Relevant known folders:

  FOLDERID_ProgramFiles      C:\Program Files
  FOLDERID_ProgramFilesX64   C:\Program Files
  FOLDERID_ProgramFilesX86   C:\Program Files (x86)
  FOLDERID_UserProgramFiles  C:\Users\pickens\AppData\Local\Programs

Relevant CSIDLs:

  CSIDL_PROGRAM_FILES     C:\Program Files
  CSIDL_PROGRAM_FILESX86  C:\Program Files (x86)

Relevant registry keys - with default view:

  ProgramFilesDir        C:\Program Files
  ProgramFilesDir (Arm)  C:\Program Files (Arm)
  ProgramFilesDir (x86)  C:\Program Files (x86)
  ProgramW6432Dir        C:\Program Files

Relevant registry keys - with KEY_WOW64_32KEY:

  ProgramFilesDir        C:\Program Files (x86)
  ProgramFilesDir (Arm)  [The system cannot find the file specified. (os error 2)]
  ProgramFilesDir (x86)  C:\Program Files (x86)
  ProgramW6432Dir        C:\Program Files

Relevant registry keys - with KEY_WOW64_64KEY:

  ProgramFilesDir        C:\Program Files
  ProgramFilesDir (Arm)  C:\Program Files (Arm)
  ProgramFilesDir (x86)  C:\Program Files (x86)
  ProgramW6432Dir        C:\Program Files

About

Find Program Files folders in several ways

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages