Project Description

System.Peppers is a dll targetting missing features from the .Net core framework create d by Jonathan Peppers (hence the title). Includes wrappers for p/invoke, WMI, or COM interop to make it easier to do low level operations in C#.

What does it do?

Want to run "shutdown -r -f -t 0" on your roommates computer remotely? Want to programmatically change screen resolution or turn off the monitor? Want to install unsigned drivers without the Microsoft Logo prompt? Want to install/uinstall msi files? Want to programmatically map network drives? Want to modify ip settings on network adapters? Want to programmatically create a shared folder? Want to install an assembly into the GAC? Want to do it all from C# and without running a command-line process??? Here's the spot!

Temporary Disclamier

System.Peppers is a work in progress, use at your own risk. Note, that (?!?) denotes a class that is not yet working (others are working but not all are thoroughly tested, let me know of any bugs). My main goal is to wrap interop in a safe-memory leak free framework, and in the case of WMI come up with clever, good quality design patterns for unmanaged wrappers. This will also include some hacky registry manipulation to get hidden Microsoft-created values in Windows.

Features of System.Peppers.dll
  • DriverSigningSettings class for changing windows driver signing options
  • Lightweight version of System.Windows.Forms.MessageBox (who wants to load System.Windows.Forms?)
  • Lightweight version of System.Drawing.Bitmap (mainly for loading stream/byte[] to a HBitmap)
  • Extended version of System.Windows.Forms.Screen (?!?)
  • HostFile class for modifying systems host file
  • MonitorPower class for turning a system's monitor to on/off/standby
  • GacInstaller class for installing assemblies to the GAC
  • NetworkDrive class for mapping network drives (all functionality of "net use" at command line)
  • NativeStream class for passing managed System.IO.Stream objects to native code requiring an IStream

UPDATE (currently in subversion only)
  • Impersonator class for impersonating different users
  • Shutdown class for programmatically shutting down computers, can be used on remote computers as well!
  • LightResetEvent class for using ManualResetEvent/AutoResetEvent functionality without as many calls into unmanaged code

Features of System.Peppers.Wmi.dll
  • Wrappers for:
    • Win32-NetworkAdapterConfiguration
    • Win32-WindowsProductActivation (XP only for now)
    • Win32-LogicalDisk
    • Win32-PhysicalMemory
    • Win32-UserAccount
    • Win32-Printer
    • Win32-Process
    • Win32-Processor
    • Win32-Product
    • Win32-Service
    • Win32-Share
    • Win32-ComputerSystem (newest subversion)
  • Ability to use any WMI class on a remote computer
  • Enumerated values are mapped to enum
  • Null values are defaulted

Features of System.Peppers.ShellExtension (in progress)
  • IContextMenu (?!?)
  • IURLSearchHook (?!?)
  • IShellDetails (?!?)

My goal is to include an easy-to-work-with dll including low-level tasks that are useful, so feel free to comment on other ideas for me to add.

I am also in the process of providing examples in the System.Peppers.Testing project included with the source. If someone would like to actively volunteer in writing example apps or provide implementation, by all means let me know!

You can also check out my blog which will eventually discuss more examples of System.Peppers and other C#/.Net info.

You can also donate if that is something that interests you, or would like a specific feature added.

Last edited Nov 30, 2009 at 10:00 PM by jonathanpeppers, version 40