├── .gitattributes ├── .gitignore ├── HISTORY.md ├── Images ├── Privacy_location_en.png ├── Privacy_location_jp.png ├── Screenshot_main.png └── Screenshot_organize.png ├── LICENSE.txt ├── PRIVACY.md ├── README.md ├── README_ja.md └── Source ├── .editorconfig ├── Directory.Build.props ├── IconImage ├── App.config ├── App.xaml ├── App.xaml.cs ├── DarkAppIcon.xaml ├── DarkAppIcon.xaml.cs ├── FrameworkElementImage.cs ├── IconImage.csproj ├── LightAppIcon.xaml ├── LightAppIcon.xaml.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── ScaleConverter.cs ├── UpdateImage.xaml └── UpdateImage.xaml.cs ├── Installer ├── Installer.wixproj ├── Product.wxs └── Resources │ ├── banner.png │ └── dialog.png ├── ReactivePropertyTest ├── App.config ├── App.xaml ├── App.xaml.cs ├── BindableBase.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── MainWindowViewModel.cs ├── MemberViewModel.cs ├── ObservableExtension.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings └── ReactivePropertyTest.csproj ├── VisualStateTest ├── App.config ├── App.xaml ├── App.xaml.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── VisualStateBehavior.cs ├── VisualStateMonitor.cs └── VisualStateTest.csproj ├── Wifinian.Test ├── LanguageServiceTest.cs ├── Properties │ └── AssemblyInfo.cs └── Wifinian.Test.csproj ├── Wifinian.sln └── Wifinian ├── App.config ├── App.xaml ├── App.xaml.cs ├── AppController.cs ├── Appkeeper.cs ├── Common ├── BindableBase.cs └── DisposableBase.cs ├── Helper ├── ColorExtension.cs ├── HsbColor.cs └── OsVersion.cs ├── Library ├── ScreenFrame.dll ├── ScreenFrame.xml ├── StartupAgency.dll └── StartupAgency.xml ├── Models ├── AppDataService.cs ├── LanguageService.cs ├── LocationInfo.cs ├── Logger.cs ├── ProductInfo.cs ├── Settings.cs └── Wlan │ ├── IWlanWorker.cs │ ├── MockWorker.cs │ ├── NativeWifiProfileItem.cs │ ├── NativeWifiWorker.cs │ ├── Netsh.cs │ ├── NetshWorker.cs │ └── ProfileItem.cs ├── Properties ├── AssemblyInfo.cs ├── Resources.Designer.cs └── Resources.resx ├── Resources ├── Icons │ ├── AppIcon.ico │ ├── DarkTrayIcon.ico │ └── LightTrayIcon.ico ├── language.en.txt └── language.ja-JP.txt ├── ViewModels ├── MainWindowViewModel.cs ├── MenuWindowViewModel.cs └── ProfileItemViewModel.cs ├── Views ├── Behaviors │ ├── FrameworkElementCenterBehavior.cs │ ├── ListBoxHeightBehavior.cs │ ├── ListBoxSelectedItemBehavior.cs │ └── WindowMaximizeBoxBehavior.cs ├── Controls │ ├── IconButton.cs │ ├── MovingButton.cs │ ├── MovingControl.cs │ ├── ProfileContentControl.cs │ ├── SignalProgressBar.cs │ ├── SimpleToggleButton.cs │ └── SwitchTextBox.cs ├── Converters │ ├── BooleanInverseConverter.cs │ └── VisibilityInverseConverter.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── MenuWindow.xaml ├── MenuWindow.xaml.cs ├── Styles │ ├── CommonControls.xaml │ ├── CustomControls.xaml │ └── CustomTheme.xaml ├── ThemeService.cs └── WindowPainter.cs ├── Wifinian.VisualElementsManifest.xml ├── Wifinian.csproj └── app.manifest /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | #* text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | x64/ 19 | x86/ 20 | build/ 21 | bld/ 22 | [Bb]in/ 23 | [Oo]bj/ 24 | 25 | # Visual Studio 2015 cache/options directory 26 | .vs/ 27 | 28 | # MSTest test Results 29 | [Tt]est[Rr]esult*/ 30 | [Bb]uild[Ll]og.* 31 | 32 | # NUNIT 33 | *.VisualState.xml 34 | TestResult.xml 35 | 36 | # Build Results of an ATL Project 37 | [Dd]ebugPS/ 38 | [Rr]eleasePS/ 39 | dlldata.c 40 | 41 | # DNX 42 | project.lock.json 43 | artifacts/ 44 | 45 | *_i.c 46 | *_p.c 47 | *_i.h 48 | *.ilk 49 | *.meta 50 | *.obj 51 | *.pch 52 | *.pdb 53 | *.pgc 54 | *.pgd 55 | *.rsp 56 | *.sbr 57 | *.tlb 58 | *.tli 59 | *.tlh 60 | *.tmp 61 | *.tmp_proj 62 | *.log 63 | *.vspscc 64 | *.vssscc 65 | .builds 66 | *.pidb 67 | *.svclog 68 | *.scc 69 | 70 | # Chutzpah Test files 71 | _Chutzpah* 72 | 73 | # Visual C++ cache files 74 | ipch/ 75 | *.aps 76 | *.ncb 77 | *.opensdf 78 | *.sdf 79 | *.cachefile 80 | 81 | # Visual Studio profiler 82 | *.psess 83 | *.vsp 84 | *.vspx 85 | 86 | # TFS 2012 Local Workspace 87 | $tf/ 88 | 89 | # Guidance Automation Toolkit 90 | *.gpState 91 | 92 | # ReSharper is a .NET coding add-in 93 | _ReSharper*/ 94 | *.[Rr]e[Ss]harper 95 | *.DotSettings.user 96 | 97 | # JustCode is a .NET coding add-in 98 | .JustCode 99 | 100 | # TeamCity is a build add-in 101 | _TeamCity* 102 | 103 | # DotCover is a Code Coverage Tool 104 | *.dotCover 105 | 106 | # NCrunch 107 | _NCrunch_* 108 | .*crunch*.local.xml 109 | 110 | # MightyMoose 111 | *.mm.* 112 | AutoTest.Net/ 113 | 114 | # Web workbench (sass) 115 | .sass-cache/ 116 | 117 | # Installshield output folder 118 | [Ee]xpress/ 119 | 120 | # DocProject is a documentation generator add-in 121 | DocProject/buildhelp/ 122 | DocProject/Help/*.HxT 123 | DocProject/Help/*.HxC 124 | DocProject/Help/*.hhc 125 | DocProject/Help/*.hhk 126 | DocProject/Help/*.hhp 127 | DocProject/Help/Html2 128 | DocProject/Help/html 129 | 130 | # Click-Once directory 131 | publish/ 132 | 133 | # Publish Web Output 134 | *.[Pp]ublish.xml 135 | *.azurePubxml 136 | ## TODO: Comment the next line if you want to checkin your 137 | ## web deploy settings but do note that will include unencrypted 138 | ## passwords 139 | #*.pubxml 140 | 141 | *.publishproj 142 | 143 | # NuGet Packages 144 | *.nupkg 145 | # The packages folder can be ignored because of Package Restore 146 | **/packages/* 147 | # except build/, which is used as an MSBuild target. 148 | !**/packages/build/ 149 | # Uncomment if necessary however generally it will be regenerated when needed 150 | #!**/packages/repositories.config 151 | 152 | # Windows Azure Build Output 153 | csx/ 154 | *.build.csdef 155 | 156 | # Windows Store app package directory 157 | AppPackages/ 158 | 159 | # Visual Studio cache files 160 | # files ending in .cache can be ignored 161 | *.[Cc]ache 162 | # but keep track of directories ending in .cache 163 | !*.[Cc]ache/ 164 | 165 | # Others 166 | ClientBin/ 167 | [Ss]tyle[Cc]op.* 168 | ~$* 169 | *~ 170 | *.dbmdl 171 | *.dbproj.schemaview 172 | *.pfx 173 | *.publishsettings 174 | node_modules/ 175 | orleans.codegen.cs 176 | 177 | # RIA/Silverlight projects 178 | Generated_Code/ 179 | 180 | # Backup & report files from converting an old project file 181 | # to a newer Visual Studio version. Backup files are not needed, 182 | # because we have git ;-) 183 | _UpgradeReport_Files/ 184 | Backup*/ 185 | UpgradeLog*.XML 186 | UpgradeLog*.htm 187 | 188 | # SQL Server files 189 | *.mdf 190 | *.ldf 191 | 192 | # Business Intelligence projects 193 | *.rdl.data 194 | *.bim.layout 195 | *.bim_*.settings 196 | 197 | # Microsoft Fakes 198 | FakesAssemblies/ 199 | 200 | # Node.js Tools for Visual Studio 201 | .ntvs_analysis.dat 202 | 203 | # Visual Studio 6 build log 204 | *.plg 205 | 206 | # Visual Studio 6 workspace options file 207 | *.opt 208 | 209 | # LightSwitch generated files 210 | GeneratedArtifacts/ 211 | _Pvt_Extensions/ 212 | ModelManifest.xml -------------------------------------------------------------------------------- /HISTORY.md: -------------------------------------------------------------------------------- 1 | ## History 2 | 3 | Ver 3.7 2025-1-25 4 | 5 | - Update WPA3 authentications 6 | 7 | Ver 3.6 2025-1-14 8 | 9 | - Add notification for Windows 11 24H2 10 | 11 | Ver 3.5 2024-7-6 12 | 13 | - Add support of 6GHz band 14 | 15 | Ver 3.4 2024-1-14 16 | 17 | - Modify icons 18 | 19 | Ver 3.3 2022-8-2 20 | 21 | - Modify to show Wi-Fi protocol 22 | 23 | Ver 3.2 2021-12-9 24 | 25 | - Modify Engage function 26 | 27 | Ver 3.1 2021-12-3 28 | 29 | - Update libraries 30 | 31 | Ver 3.0 2021-9-9 32 | 33 | - Change UI 34 | - Make rounded corners default on Windows 11 35 | 36 | Ver 2.9 2021-4-12 37 | 38 | - Add function to show available networks only 39 | 40 | Ver 2.8 2021-3-30 41 | 42 | - Modify handling of invalid information 43 | 44 | Ver 2.7 2021-3-28 45 | 46 | - Update libraries 47 | 48 | Ver 2.6 2021-1-25 49 | 50 | - Improve codes 51 | 52 | Ver 2.4 2020-9-29 53 | 54 | - Adapt WPA3 55 | - Change to save Engage state 56 | 57 | Ver 2.3 2019-12-6 58 | 59 | - Change function name to Organize 60 | 61 | Ver 2.2 2018-9-2 62 | 63 | - Add function to show frequency band and channel of wireless LAN 64 | 65 | Ver 2.1 2018-2-19 66 | 67 | - Added handling when wireless functions are not available 68 | - Extended startup function 69 | 70 | Ver 2.0 2018-1-4 71 | 72 | - Recreated and renamed 73 | 74 | Ver 1.1 2015-12-2 75 | 76 | - Fixed exception when loading settings file 77 | - Changed target framework to 4.6 78 | - Added flyout to notification area icon 79 | 80 | Ver 1.1 2015-11-13 81 | 82 | - Switched from internal NativeWifi to ManagedNativeWifi 83 | 84 | Ver 1.0 2015-8-22 85 | 86 | - Initial release -------------------------------------------------------------------------------- /Images/Privacy_location_en.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emoacht/Wifinian/e17e5989de2be66b3731dcf2a7dc88a505bd5e3f/Images/Privacy_location_en.png -------------------------------------------------------------------------------- /Images/Privacy_location_jp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emoacht/Wifinian/e17e5989de2be66b3731dcf2a7dc88a505bd5e3f/Images/Privacy_location_jp.png -------------------------------------------------------------------------------- /Images/Screenshot_main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emoacht/Wifinian/e17e5989de2be66b3731dcf2a7dc88a505bd5e3f/Images/Screenshot_main.png -------------------------------------------------------------------------------- /Images/Screenshot_organize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emoacht/Wifinian/e17e5989de2be66b3731dcf2a7dc88a505bd5e3f/Images/Screenshot_organize.png -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015-2019 emoacht 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /PRIVACY.md: -------------------------------------------------------------------------------- 1 | ## Privacy Policy 2 | 3 | This application, Wifinian, does not collect personal information. 4 | 5 | Note: This notice is required by Microsoft Store because this application declares full trust capability, regardless of its actual functions. That capability is the requirement of Desktop Bridge for being distributed through the Store. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | English|[Japanese](README_ja.md) 2 | -|- 3 | 4 | # Wifinian 5 | 6 | More control over Wi-Fi connections! 7 | 8 | Wifinian is a Windows desktop tool to enable user to actively control Wi-Fi connections. 9 | 10 | Screenshot
11 | (DPI: 200%) 12 | 13 | Functions: 14 | * Connect to or disconnect from a wireless network 15 | * Rename a wireless profile 16 | * Change automatic connection (Auto Connect) or automatic switch (Auto Switch) settings of a wireless profile 17 | * __Rush__ - Perform rescan of wireless networks in short intervals (The number indicates interval (sec).) 18 | * __Engage__ - Execute automatic connection depending on signal strength, order and automatic switch setting of wireless profiles (The number indicates threshold of signal strength (%).) 19 | * __Organize__ - Change the order (priority) of wireless profiles, delete a wireless profile 20 | 21 | ![Screenshot](Images/Screenshot_organize.png)
22 | (DPI: 100%) 23 | 24 | ## Requirements 25 | 26 | * Windows 7 or newer 27 | * .NET Framework 4.8 28 | * On Windows 11 (24H2) or newer, in Privacy & security > Location settings, access to location information needs to be turned on. 29 | Location 30 | 31 | ## Download 32 | 33 | * Microsoft Store (Windows 10 (1607) or newer):
34 | [Wifinian](https://www.microsoft.com/store/apps/9pngfqps4flh)
35 | Wifinian 36 | 37 | * Winget (a.k.a. [Windows Package Manager](https://docs.microsoft.com/en-us/windows/package-manager), App Installer): 38 | ``` 39 | winget install Wifinian 40 | ``` 41 | 42 | * Other:
43 | :floppy_disk: [Installer](https://github.com/emoacht/Wifinian/releases/download/3.7.1-Installer/WifinianInstaller371.zip) 44 | 45 | ## Install/Uninstall 46 | 47 | If you wish to place executable files on your own, you can extract them from installer file (.msi) by the following command: 48 | 49 | ``` 50 | msiexec /a [source msi file path] targetdir=[destination folder path (absolute path)] /qn 51 | ``` 52 | 53 | In such case, please note the following: 54 | 55 | - The settings file will be created at: `[system drive]\Users\[user name]\AppData\Local\Wifinian\` 56 | - When you check [Start on sign in], a registry value will be added to: `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run` 57 | 58 | ## Remarks 59 | 60 | - To rename a wireless profile, press and hold its name. 61 | - Rescan of wireless networks by OS itself is triggered by some actions and if no such actions take place, seems to be performed once per one minute. 62 | - Automatic connection by Engage function applies only to wireless profiles whose automatic switch are enabled. If a profile whose automatic switch is not enabled has been already connected, automatic connection will not be executed. 63 | - When you connect to a wireless network by OS's wireless menu, the order of wireless profiles may be automatically changed. 64 | - A wireless profile is associated with a specific wireless adapter and if the adapter is not in place, such profile will not be shown. 65 | 66 | ## History 67 | 68 | :scroll: [History](HISTORY.md) 69 | 70 | ## Libraries 71 | 72 | - [Reactive Extensions][1] 73 | - [Reactive Property][2] 74 | - [XamlBehaviors for WPF][3] 75 | - [Managed Native Wifi][4] 76 | - [Monitorian/ScreenFrame][5] 77 | - [Monitorian/StartupAgency][5] 78 | 79 | [1]: https://github.com/Reactive-Extensions/Rx.NET 80 | [2]: https://github.com/runceel/ReactiveProperty 81 | [3]: https://github.com/microsoft/XamlBehaviorsWpf 82 | [4]: https://github.com/emoacht/ManagedNativeWifi 83 | [5]: https://github.com/emoacht/Monitorian 84 | 85 | ## License 86 | 87 | - MIT License 88 | 89 | ## Developer 90 | 91 | - emoacht (emotom[atmark]pobox.com) 92 | 93 | _____ 94 | 95 | ### How to delete wireless profiles from OS's GUI 96 | 97 | The GUI to delete wireless profiles has come back in Windows 8.1 Update. To reach this GUI, see the following. 98 | 99 | #### Windows 10 100 | 101 | [Network settings] from notification area (or [Settings] from Start menu) → [Network & Internet] → [Wi-Fi] → [Manage WiFi Settings] → [Manage known networks] 102 | 103 | Note: If multiple profiles of the same name exist (it will happen if you connected to the same wireless network using multiple wireless adapters because SSID of wireless network is used for a profile name), such profiles will not be differentiated and will be deleted in bulk. 104 | 105 | #### Windows 8.1 Update 106 | 107 | [Settings] in Charm → [Change PC settings] → [Network] → [Connections] → [Manage known networks] in [Wi-Fi] 108 | -------------------------------------------------------------------------------- /README_ja.md: -------------------------------------------------------------------------------- 1 | [English](README.md)|Japanese 2 | -|- 3 | 4 | # Wifinian 5 | 6 | Wi-Fi接続にもっとコントロールを! 7 | 8 | WifinianはWi-Fi接続をユーザーが積極的にコントロールできるWindowsデスクトップツールです。 9 | 10 | Screenshot
11 | (DPI: 200%) 12 | 13 | 機能: 14 | * 無線ネットワークとの接続と切断 15 | * 無線プロファイルの名称の変更 16 | * 無線プロファイルの自動接続(Auto Connect)と自動切換(Auto Switch)設定の変更 17 | * __Rush__ - 短い間隔での無線ネットワークの再スキャンの実行(数字は間隔(秒)を示す。) 18 | * __Engage__ - 無線プロファイルの電波強度、順番、自動切換の設定に応じた自動接続の実行(数字は電波強度(%)の閾値を示す。) 19 | * __Organize__ - 無線プロファイルの順番(優先度)の変更、無線プロファイルの削除 20 | 21 | ![Screenshot](Images/Screenshot_organize.png)
22 | (DPI: 100%) 23 | 24 | ## 動作条件 25 | 26 | * Windows 7以降 27 | * .NET Framework 4.8 28 | * Windows 11 (24H2) 以降では、プライバシーとセキュリティ > 位置情報の設定で、位置情報へのアクセスがオンになっていることが必要。 29 | Location 30 | 31 | ## ダウンロード 32 | 33 | * Microsoft ストア (Windows 10 (1607) 以降):
34 | [Wifinian](https://www.microsoft.com/store/apps/9pngfqps4flh)
35 | Wifinian 36 | 37 | * Winget (a.k.a. [Windows Package Manager](https://docs.microsoft.com/en-us/windows/package-manager), アプリインストーラー): 38 | ``` 39 | winget install Wifinian 40 | ``` 41 | 42 | * その他:
43 | :floppy_disk: [インストーラー](https://github.com/emoacht/Wifinian/releases/download/3.7.1-Installer/WifinianInstaller371.zip) 44 | 45 | ## インストール/アンインストール 46 | 47 | 実行ファイルを自分で配置したい場合には、インストーラーのファイル(.msi)から実行ファイルを次のコマンドで抽出できます。 48 | 49 | ``` 50 | msiexec /a [source msi file path] targetdir=[destination folder path (absolute path)] /qn 51 | ``` 52 | 53 | この場合、以下に留意してください。 54 | 55 | - 設定ファイルは次の場所に作成されます: `[system drive]\Users\[user name]\AppData\Local\Wifinian\` 56 | - [サインイン時に起動する]にチェックしたときは、レジストリ値が次の位置に追加されます: `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run` 57 | 58 | ## 特記事項 59 | 60 | - 無線プロファイルの名称を変更するには、その名称を長押ししてください。 61 | - OS自身による無線ネットワークの再スキャンは、幾つかのアクションに応じて行われるほか、そのようなアクションがなければ、1分ごとに行われるようです。 62 | - Engage機能の自動接続は、自動切換が有効な無線プロファイルだけが対象です。自動切換が有効でない無線プロファイルが既に接続済みのときは、自動接続は行われません。 63 | - OSの無線メニューから接続すると、無線プロファイルの順番が自動的に変更されることがあります。 64 | - 無線プロファイルは特定の無線アダプターに関連付けられているので、そのアダプターが取り外されているときは表示されません。 65 | 66 | ## 履歴 67 | 68 | :scroll: [History](HISTORY.md) 69 | 70 | ## ライブラリ 71 | 72 | - [Reactive Extensions][1] 73 | - [Reactive Property][2] 74 | - [XamlBehaviors for WPF][3] 75 | - [Managed Native Wifi][4] 76 | - [Monitorian/ScreenFrame][5] 77 | - [Monitorian/StartupAgency][5] 78 | 79 | [1]: https://github.com/Reactive-Extensions/Rx.NET 80 | [2]: https://github.com/runceel/ReactiveProperty 81 | [3]: https://github.com/microsoft/XamlBehaviorsWpf 82 | [4]: https://github.com/emoacht/ManagedNativeWifi 83 | [5]: https://github.com/emoacht/Monitorian 84 | 85 | ## ライセンス 86 | 87 | - MIT License 88 | 89 | ## 開発者 90 | 91 | - emoacht (emotom[atmark]pobox.com) 92 | 93 | _____ 94 | 95 | ### 無線プロファイルをOSのGUIから削除する方法 96 | 97 | 無線プロファイルを削除するためのGUIがWindows 8.1 Updateから復活しました。このGUIに辿り着くには以下を見てください。 98 | 99 | #### Windows 10 100 | 101 | 通知領域から[ネットワーク設定](またはスタートメニューから[設定])→ [ネットワークとインターネット] → [Wi-Fi] → [Wi-Fi設定を管理する] → [既知のネットワークの管理] 102 | 103 | 注意: 同名のプロファイルが複数ある場合(プロファイル名には無線ネットワークのSSIDが使われるので、同じ無線ネットワークに複数の無線アダプターで接続した場合に起こる)、これらは区別されず、まとめて削除されます。 104 | 105 | #### Windows 8.1 Update 106 | 107 | チャームの[設定] → [PC設定の変更] → [ネットワーク] → [接続] → [Wi-Fi]の[既知のネットワークの管理] 108 | -------------------------------------------------------------------------------- /Source/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*.{cs,vb,xaml}] 4 | indent_style = tab 5 | indent_size = 4 6 | end_of_line = crlf 7 | insert_final_newline = false 8 | trim_trailing_whitespace = true 9 | charset = utf-8-bom 10 | -------------------------------------------------------------------------------- /Source/Directory.Build.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | latest 4 | 5 | -------------------------------------------------------------------------------- /Source/IconImage/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Source/IconImage/App.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Source/IconImage/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | namespace IconImage; 4 | 5 | public partial class App : Application 6 | { 7 | } -------------------------------------------------------------------------------- /Source/IconImage/DarkAppIcon.xaml: -------------------------------------------------------------------------------- 1 |  11 | 12 | #FF343434 13 | #FF262626 14 | 15 | 16 | 17 | 18 | 19 | 20 20 | 21 | 22 | 23 | 26 | 27 | 30 | 31 | 32 | 33 | 34 | 35 | 38 | 39 | 40 | 41 | 42 | 49 | 53 | 54 | 58 | 59 | 60 | 61 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 75 | 78 | 79 | 82 | 85 | 86 | 87 | 90 | 93 | 94 | 97 | 100 | 101 | 102 | 105 | 108 | 109 | 112 | 115 | 116 | 117 | -------------------------------------------------------------------------------- /Source/IconImage/DarkAppIcon.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace IconImage; 4 | 5 | public partial class DarkAppIcon : UserControl 6 | { 7 | public DarkAppIcon() 8 | { 9 | InitializeComponent(); 10 | } 11 | } -------------------------------------------------------------------------------- /Source/IconImage/FrameworkElementImage.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Windows; 4 | using System.Windows.Media; 5 | using System.Windows.Media.Imaging; 6 | 7 | namespace IconImage; 8 | 9 | public class FrameworkElementImage 10 | { 11 | /// 12 | /// Saves the image of a specified FrameworkElement to file in PNG format. 13 | /// 14 | /// FrameworkElement 15 | /// File path 16 | /// Width of saved image (optional) 17 | /// Height of saved image (optional) 18 | public static void SaveImage(FrameworkElement source, string filePath, double width = 0D, double height = 0D) 19 | { 20 | if (source is null) 21 | throw new ArgumentNullException(nameof(source)); 22 | if (string.IsNullOrWhiteSpace(filePath)) 23 | throw new ArgumentNullException(nameof(filePath)); 24 | 25 | var rtb = new RenderTargetBitmap( 26 | (int)source.Width, 27 | (int)source.Height, 28 | 96D, 96D, 29 | PixelFormats.Pbgra32); 30 | 31 | rtb.Render(source); 32 | 33 | var encoder = new PngBitmapEncoder(); 34 | encoder.Frames.Add(BitmapFrame.Create(rtb)); 35 | 36 | if ((0 < width) || (0 < height)) 37 | { 38 | var bi = new BitmapImage(); 39 | 40 | using (var ms = new MemoryStream()) 41 | { 42 | encoder.Save(ms); 43 | ms.Seek(0, SeekOrigin.Begin); 44 | 45 | bi.BeginInit(); 46 | bi.CacheOption = BitmapCacheOption.OnLoad; 47 | bi.StreamSource = ms; 48 | 49 | if (0 < width) 50 | bi.DecodePixelWidth = (int)width; 51 | if (0 < height) 52 | bi.DecodePixelHeight = (int)height; 53 | 54 | bi.EndInit(); 55 | } 56 | 57 | encoder = new PngBitmapEncoder(); // Save method cannot be used twice. 58 | encoder.Frames.Add(BitmapFrame.Create(bi)); 59 | } 60 | 61 | using (var fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.ReadWrite)) 62 | { 63 | encoder.Save(fs); 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /Source/IconImage/IconImage.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {566D20ED-A863-43BA-BC28-D21E46FEC661} 8 | WinExe 9 | Properties 10 | IconImage 11 | IconImage 12 | v4.8 13 | 512 14 | {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 15 | 4 16 | true 17 | 18 | 19 | 20 | AnyCPU 21 | true 22 | full 23 | false 24 | bin\Debug\ 25 | DEBUG;TRACE 26 | prompt 27 | 4 28 | 29 | 30 | AnyCPU 31 | pdbonly 32 | true 33 | bin\Release\ 34 | TRACE 35 | prompt 36 | 4 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 4.0 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | MSBuild:Compile 55 | Designer 56 | 57 | 58 | DarkAppIcon.xaml 59 | 60 | 61 | 62 | LightAppIcon.xaml 63 | 64 | 65 | 66 | UpdateImage.xaml 67 | 68 | 69 | MSBuild:Compile 70 | Designer 71 | 72 | 73 | MSBuild:Compile 74 | Designer 75 | 76 | 77 | MSBuild:Compile 78 | Designer 79 | 80 | 81 | App.xaml 82 | Code 83 | 84 | 85 | MainWindow.xaml 86 | Code 87 | 88 | 89 | Designer 90 | MSBuild:Compile 91 | 92 | 93 | 94 | 95 | Code 96 | 97 | 98 | True 99 | True 100 | Resources.resx 101 | 102 | 103 | True 104 | Settings.settings 105 | True 106 | 107 | 108 | ResXFileCodeGenerator 109 | Resources.Designer.cs 110 | 111 | 112 | SettingsSingleFileGenerator 113 | Settings.Designer.cs 114 | 115 | 116 | 117 | 118 | 119 | Designer 120 | 121 | 122 | 123 | -------------------------------------------------------------------------------- /Source/IconImage/LightAppIcon.xaml: -------------------------------------------------------------------------------- 1 |  11 | 12 | #FFEAEAEA 13 | White 14 | 15 | 16 | 17 | 18 | 19 | 20 20 | 21 | 22 | 23 | 26 | 27 | 30 | 31 | 32 | 33 | 34 | 35 | 38 | 39 | 40 | 41 | 42 | 49 | 53 | 54 | 58 | 59 | 60 | 61 | 62 | 63 | 66 | 69 | 70 | 73 | 76 | 77 | 78 | 81 | 84 | 85 | 88 | 91 | 92 | 93 | 96 | 99 | 100 | 103 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /Source/IconImage/LightAppIcon.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace IconImage; 4 | 5 | public partial class LightAppIcon : UserControl 6 | { 7 | public LightAppIcon() 8 | { 9 | InitializeComponent(); 10 | } 11 | } -------------------------------------------------------------------------------- /Source/IconImage/MainWindow.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 24 | 26 | 28 | 29 | 30 | 32 | 33 | 34 | 35 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 50 | 56 | 57 | 58 | 59 | 60 | 124 | 135 |