- Disable single-file publishing (causes DirectWrite/font crash in WPF) - Switch to multi-file self-contained deployment - Update WiX installer to harvest all publish files using heat.exe - Fix tray icon loading issue by including all necessary DLLs - Reduce MSI size while maintaining all functionality Fixes: - System.TypeInitializationException crash on startup - Missing tray icon (now shows DT logo correctly) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
NFC Actions
A Windows 11 system tray application that monitors NFC card readers and performs automated actions when NFC tags are detected.
Features
- System Tray Application: Runs in the background with a system tray icon
- Multi-Reader Support: Automatically detects and monitors all connected PC/SC-compatible NFC readers
- Dynamic USB Detection: Automatically handles USB reader plug/unplug events
- Reader Selection: Enable/disable monitoring for specific readers
- NDEF Payload Extraction: Reads NDEF data from NFC tags
- Configurable Actions:
- Copy NDEF payload to clipboard
- Launch URLs in default browser
- Type NDEF content as keyboard input
- Persistent Settings: Remembers reader preferences and action settings between sessions
Requirements
- Windows 11 (or Windows 10 with PC/SC service)
- .NET 7.0 Runtime or later
- PC/SC-compatible NFC reader
Building the Application
Using Visual Studio 2022
- Open
NfcActions.slnin Visual Studio 2022 - Build the solution (Ctrl+Shift+B)
- Run the application (F5)
Using .NET CLI
dotnet build NfcActions.sln
dotnet run --project NfcActions/NfcActions.csproj
Usage
Starting the Application
When you run NFC Actions, it will:
- Start minimized to the system tray
- Show a notification balloon indicating it's running
- Automatically detect all connected NFC readers
- Begin monitoring enabled readers for card events
Accessing the Main Window
- Double-click the tray icon, OR
- Right-click the tray icon and select "Open"
Configuring Readers
In the main window:
- View all detected NFC readers in the "Active Readers" list
- Check/uncheck readers to enable/disable monitoring
- Settings are saved automatically
Configuring Actions
Select which actions to perform when an NFC tag is detected:
- Copy NDEF data to clipboard: Copies the NDEF payload text to the clipboard
- Launch URLs in default browser: If the NDEF payload is a URL, opens it in your default browser
- Type NDEF content as keyboard input: Simulates typing the NDEF payload (useful for form filling)
Note: Only the payload from the first NDEF record is used. Tags with multiple messages/records will use the first one.
Exiting the Application
- Right-click the tray icon and select "Exit"
Settings
Settings are stored in:
%APPDATA%\NfcActions\settings.json
The settings file includes:
- List of disabled readers
- Action preferences (clipboard, URLs, keyboard)
Project Structure
NfcActions/
├── Models/
│ ├── AppSettings.cs # Application settings model
│ └── ReaderItem.cs # Reader list item model
├── Services/
│ ├── ActionService.cs # Handles clipboard, browser, and keyboard actions
│ ├── CardReaderService.cs # PC/SC reader monitoring and card detection
│ ├── NdefParser.cs # NDEF message parsing
│ └── SettingsService.cs # Settings persistence
├── ViewModels/
│ └── MainViewModel.cs # Main window view model
├── App.xaml # Application resources and startup
├── App.xaml.cs # Application lifecycle and tray icon
├── MainWindow.xaml # Main window UI
└── MainWindow.xaml.cs # Main window code-behind
Dependencies
- PCSC (v7.0.1): PC/SC wrapper for smart card communication
- PCSC.Iso7816 (v7.0.1): ISO 7816 APDU commands
- InputSimulatorCore (v1.0.5): Keyboard input simulation
- System.Management (v9.0.10): USB device detection (via WMI)
Technical Details
NDEF Parsing
The application reads NDEF (NFC Data Exchange Format) messages from NFC tags using standard ISO 7816 APDUs:
- Selects the NDEF Tag Application
- Reads the Capability Container
- Reads the NDEF file
- Parses the NDEF message structure to extract the payload
Reader Monitoring
The application polls PC/SC readers every 500ms to detect:
- New readers being connected
- Readers being disconnected
- Cards being inserted
- Cards being removed
Thread Safety
All PC/SC operations are thread-safe and properly synchronized to handle concurrent reader access.
Troubleshooting
No Readers Detected
- Ensure your NFC reader is properly connected
- Check that the Windows Smart Card service is running:
services.msc → Smart Card - Try unplugging and replugging the reader
Card Not Detected
- Ensure the reader is enabled in the main window
- Try holding the card on the reader for a longer duration
- Some readers require specific card positioning
Actions Not Working
- Clipboard: Ensure no other application has locked the clipboard
- Browser: Check that you have a default browser configured
- Keyboard: The keyboard simulation requires the target window to have focus
License
This project is provided as-is for educational and development purposes.
Contributing
Feel free to submit issues or pull requests for improvements or bug fixes.