toshiのブログ

toshiのブログ

日頃、科学技術について調査していることや趣味でやっていることなどを紹介していきます。

Amebaでブログを始めよう!

不要なタスクが多数動作していたので、下記の schtasks コマンドで無効化しました。

管理者権限のPowershell か 管理者権限のコマンドプロンプト上で動作します。

schtasks コマンドの使い方は下記のとおり

 

1.タスク名を指定してタスクの状態を確認する

schtasks /Query /v /FO list /TN "タスク名"| findstr "状態:"

 

2.タスク名を指定してタスクを実行する

schtasks /Run /TN "タスク名"

 

3.タスク名を指定してタスクを停止する

schtasks /End /TN "タスク名"

 

4.タスク名を指定してタスクを削除する

schtasks /Delete /TN "タスク名"

 

5.タスク名を指定してタスクを有効化する

schtasks /Change /Enable /TN "タスク名"

 

6.タスク名を指定してタスクを無効化する

schtasks /Change /Disable /TN "タスク名"

 

私のPCでは、CPU負荷を高めている不要タスクを無効化するため、下記の処理を実行しました。

 

rem Adobe製品の管理
schtasks /change /Disable /TN "Adobe Acrobat Update Task"

rem MediaPlayerの共有サービス
schtasks /change /Disable /TN "\Microsoft\Windows\Windows Media Sharing\UpdateLibrary"

rem カスタマー エクスペリエンス向上プログラム(マイクロソフトにPC内の情報が送信されてしまう)
schtasks /change /Disable /TN "\Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser"
schtasks /change /Disable /TN "\Microsoft\Windows\Application Experience\ProgramDataUpdater"
schtasks /change /Disable /TN "\Microsoft\Windows\Application Experience\StartupAppTask"
schtasks /change /Disable /TN "\Microsoft\Windows\Application Experience\StartupAppTask"
schtasks /change /Disable /TN "\Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser"
schtasks /change /Disable /TN "\Microsoft\Windows\Autochk\Proxy"
schtasks /change /Disable /TN "\Microsoft\Windows\Customer Experience Improvement Program\Consolidator"
schtasks /change /Disable /TN "\Microsoft\Windows\Customer Experience Improvement Program\KernelCeipTask"
schtasks /change /Disable /TN "\Microsoft\Windows\Customer Experience Improvement Program\UsbCeip"
schtasks /change /Disable /TN "\Microsoft\Windows\CloudExperienceHost\CreateObjectTask"

rem システムのパフォーマンスおよび性能を測定します
schtasks /change /Disable /TN "\Microsoft\Windows\Maintenance\WinSAT"

rem Xboxゲーム
schtasks /change /Disable /TN "\Microsoft\XblGameSave\XblGameSaveTask"
schtasks /change /Disable /TN "\Microsoft\XblGameSave\XblGameSaveTaskLogon"

rem タスクによる CPU 高負荷
schtasks /change /Disable /TN "\Microsoft\Windows\Diagnosis\Scheduled"
schtasks /change /Disable /TN "\Microsoft\Windows\DiskFootprint\Diagnostics"

rem Microsoft-Windows-DiskDiagnosticDataCollector
rem 不要 ディスクとシステムに関する全般的な情報がWindowsディスク診断ツールによってMicrosoftに報告するタスク。 
schtasks /change /Disable /TN "\Microsoft\Windows\DiskDiagnostic\Microsoft-Windows-DiskDiagnosticDataCollector"
schtasks /change /Disable /TN "\Microsoft\Windows\DiskDiagnostic\Microsoft-Windows-DiskDiagnosticResolver"

rem 自動報告する
schtasks /change /Disable /TN "\Microsoft\Windows\Windows Error Reporting\QueueReporting"

rem 位置情報通知のタスク
schtasks /change /Disable /TN "\Microsoft\Windows\Location\Location"
schtasks /change /Disable /TN "\Microsoft\Windows\Location\WindowsActionDialog"

rem さまざまな地図関連のトースト。 オフライン用にダウンロードした地図の更新データをチェック
schtasks /change /Disable /TN "\Microsoft\Windows\Maps\MapsToastTask"
schtasks /change /Disable /TN "\Microsoft\Windows\Maps\MapsUpdateTask"

rem 電源管理の分析のみ行う
schtasks /change /Disable /TN "\Microsoft\Windows\Power Efficiency Diagnostics\AnalyzeSystem"

rem Google 関連のタスク
schtasks /change /Disable /TN "GoogleUpdateTaskMachineCore"
schtasks /change /Disable /TN "GoogleUpdateTaskMachineUA"

rem Officeの利用状況をアップロードする
schtasks /change /Disable /TN "\Microsoft\Office\OfficeTelemetryAgentFallBack2016"
schtasks /change /Disable /TN "\Microsoft\Office\OfficeTelemetryAgentLogOn2016"

rem デフラグ
schtasks /change /Disable /TN "\Microsoft\Windows\Defrag\ScheduledDefrag"

rem 企業固有のモバイル デバイス管理の構成設定を指定する
schtasks /change /Disable /TN "\Microsoft\Windows\Feedback\Siuf\DmClient"
schtasks /change /Disable /TN "\Microsoft\Windows\Feedback\Siuf\DmClientOnScenarioDownload"

rem File History
schtasks /change /Disable /TN "\Microsoft\Windows\FileHistory\File History (maintenance mode)"

rem ユーザーの言語リストに一致する言語コンポーネントをインストールします
schtasks /change /Disable /TN "\Microsoft\Windows\LanguageComponentsInstaller\Installation"
schtasks /change /Disable /TN "\Microsoft\Windows\LanguageComponentsInstaller\ReconcileLanguageResources"
schtasks /change /Disable /TN "\Microsoft\Windows\LanguageComponentsInstaller\Uninstallation"

rem 位置情報に関するタスク
schtasks /change /Disable /TN "\Microsoft\Windows\Location\Notifications"
schtasks /change /Disable /TN "\Microsoft\Windows\Location\WindowsActionDialog"

rem モバイル ブロードバンド アカウント エクスペリエンス メタデータ パーサー
schtasks /change /Disable /TN "\Microsoft\Windows\Mobile Broadband Accounts\MNO Metadata Parser"

rem ネットワーク情報コレクター
schtasks /change /Disable /TN "\Microsoft\Windows\NetTrace\GatherNetworkInfo"

rem 基礎となるインターフェイスがダウンした場合、モビリティが有効化された VPN 接続の切り替えのサポートを提供します。
schtasks /change /Disable /TN "\Microsoft\Windows\Ras\MobilityManager"

rem ディスク不足解消のため「コンポーネントストア」のクリーンアップ
schtasks /change /Disable /TN "\Microsoft\Windows\Servicing\StartComponentCleanup"

rem ファミリー機能
schtasks /change /Disable /TN "\Microsoft\Windows\Shell\FamilySafetyMonitor"
schtasks /change /Disable /TN "\Microsoft\Windows\Shell\FamilySafetyRefreshTask"

rem 検索インデックスを最新の状態に保ちます
schtasks /change /Disable /TN "\Microsoft\Windows\Shell\IndexerAutomaticMaintenance"

rem UPnPHost サービスを自動開始に設定
schtasks /change /Disable /TN "\Microsoft\Windows\UPnP\UPnPHostConfig"

rem キューに登録されたレポートは、Windows エラー報告タスクにより処理されます。
schtasks /change /Disable /TN "\Microsoft\Windows\Windows Error Reporting\QueueReporting"

pathに半角カナが含まれていたら化けることがあったので、半角カナを全角に変換する関数を作成しました。

 

仕様
文字列の中に半角カナがあれば、左記半角カナを全角カナに変換する
入力: str
出力: halfKana2fullKana
例  わたしはガキンチョです  →  わたしはガキンチョです

 

Function halfKana2fullKana(str As String) As String

'仕様
'文字列の中に半角カナがあれば、左記半角カナを全角カナに変換する
'入力: str
'出力: halfKana2fullKana
'例  わたしはガキンチョです  →  わたしはガキンチョです

Dim sp       As Long    '文字のポインタ
Dim sLen     As Long    '文字列長さ
Dim moji1    As String  '切り出した文字
Dim moji2    As String  '切り出した文字
Dim ascMoji1 As Long
Dim ascMoji2 As Long
Dim output   As String
Dim flag     As Long

If str = "" Then
  halfKana2fullKana = ""
  Exit Function
End If

sLen = Len(str)

'---- 初期化
output = ""
sp = 1

Do
  flag = 0
 
  '---- ポインタ位置から2文字が、2文字半角カナ(濁点、半濁点)ならば全角化する
  If sp <= sLen - 1 And 2 <= sLen Then
    moji1 = Mid(str, sp, 1)                                          '文字の切り出し
    moji2 = Mid(str, sp + 1, 1)
    ascMoji1 = AscW(moji1)                                           'UTFコードを取得
    ascMoji2 = AscW(moji2)                                           'UTFコードを取得
    If &HFF61 <= ascMoji1 And ascMoji1 <= &HFF9D And (ascMoji2 = &HFF9E Or ascMoji2 = &HFF9F) Then '濁点、半濁点付きの半角カナならば
      output = output & StrConv(moji1 & moji2, vbWide)               '2文字を1文字と判断して全角に変換して結合
      flag = 1
      sp = sp + 2
    End If
  End If
  
  '---- 選択文字が、1文字半角カナならば全角化する
  If flag = 0 Then
    moji1 = Mid(str, sp, 1)                                          '文字の切り出し
    ascMoji1 = AscW(moji1)                                           'UTFコードを取得
    If &HFF61 < ascMoji1 And ascMoji1 < &HFF9F Then                  '半角カナならば
      output = output & StrConv(moji1, vbWide)                       '全角に変換して結合
      flag = 1
      sp = sp + 1
    End If
  End If
    
  '---- その他の文字なら、そのまま結合
  If flag = 0 Then
    moji1 = Mid(str, sp, 1)                                          '文字の切り出し
    output = output & moji1
    sp = sp + 1
  End If
  
  If sLen < sp Then Exit Do
Loop

halfKana2fullKana = output

End Function

POV-Rayでフラクタル構造を描くのに再帰プログラムを研究中です

 

処理が終わるポイントをランダムにするとこうなりました。

 

 

Pov-Rayで再帰プログラムを作ってみました。

描画段数が規定値に達すると処理を停止するようにしています。

 

 

地震現象の全貌は、プレートテクトニクス説で全てが説明できるわけではなく、宏観異常現象にも重要な手がかりがある。

宏観異常現象の1つに、地震の前に起こる「地電流の変化」がある。
アテネ大学で開発されたVAN法という地震予知技術がある。地電流変化を検知して地震を予知するというものだ。ギリシャでは、VAN法で地震を予知し、住民の避難に成功したという実績があるという。

VAN法の参考資料

 

地電流変化は、地震の予兆として二次的に発生する結果だと考えられていたのだが、最近の研究ではどうやらそうではなく、地電流変化が地震を誘発する原因になっているということがわかってきた。

 

これについて、以下の講演から引用する。

-----------------------------------------------------------------------------------
title: 地震予知研究の歴史と現状

author: 上田 誠也(東京大学 名誉教授)

publication: 学士会会報(2007年7月 No.865)

資料へのリンク

 

【抜粋】

「電磁気現象は単に前兆だけではなく、それ自体が地震を誘発しないのかということです。もしそうだとしたら、それは地震制御につながるかもしれません。昔の日本人はナマズを料亭にまねいてご馳走や美酒を振舞って暴れないようにするという賢明な? ことをやっていた。ロシア人も、そのようなことを考えました。その当時はソ連領だったキルギスの天山山脈で2・8キロアンペアもの電流を地下に流し込む実験をしたのです。日本では100アンペアも地中に電流を流せば文句が出るでしょう。幸い、人跡まれの地でしたからできたのかもしれません。百十何回も実験を重ねたのでかなり信用できるのですが、翌々日くらいから地震が増え、数日のうちに収まる。そして流した電流のエネルギーよりも、地震のエネルギーのほうが1OO万倍も大きかった。ですから、電流が地震を起こしたのではなくて、電流が刺激して溜まったストレスが出るような仕掛けがあるらしいという結論になりました。そうなると、我が国でも東京大地震あるいは東海大地震の前に、ナマズを手なずける方法がないかと期待できるわけです。予知は実験ができないが、制御なら実験可能です。実験物理学者たちは、M8の地震をM5の地震に分けて起させるとかの実験に乗り出すかもしれません。もしかすると、制御のほうが早いかもしれませんね。」

 

日本大気電気学会でも、ロシアでの最新の研究について同様の報告があるので引用する。
-----------------------------------------------------------------------------------
title: IWSE-AS国際会議に出席して

author: 早川正士(電気通信大学)

publication: 大気電気学会誌(2011年 Vol.5 No.1 P.14)

【抜粋】

「ロシアでのMHD(2kA)電磁パルスによって地震を誘発する実験である。地殻がcritical(ないし super-critical)段階になっていれば、いかなる小さな効果でも地震を引き起こすと考えられるが、どうもそうではなく、いつMHDパルスを打ってもすぐに地震が誘起されるとの事。」


ロシアの人工地震技術
 

地電流の変化は、太陽活動によってももたらされる。
太陽風が地球にもたらす磁気嵐によって、導体である地殻に電流が誘導されるのだ。
ということは、大規模な太陽フレアが発生した後に地球で地震が発生する可能性がある。

以下、太陽活動と地震の関係について報告されている資料を紹介する。

-----------------------------------------------------------------------------------
●title: Whether solar flares can trigger earthquakes?
 author: Jain, R.
 publication: American Geophysical Union, Spring Meeting 2007, abstract #IN33A-03
資料へのリンク

【概要】
1991年から2007年にかけて調査されたマグニチュード4以上の地震(682件)について太陽フレアとの関連性について検討されている。これによると、大規模なフレアの後に強い地震が発生すると言い切るには十分ではないが、50件の地震については、太陽フレアの発生位置との関係について興味深いことがわかったとしている。

フレアが太陽風となって地球の磁気圏に到達すると、環状電流が発生し、それが断層帯のプレートに急激な変化を与えるモデルを提唱している。

 

フレアの発生位置と地球への影響度の関係については、以下にも記述がある。

-----------------------------------------------------------------------------------
●title: 太陽の科学
 author: 柴田一成
 publication: NHK BOOKS

【抜粋】
P.116
(太陽の)東側(地球の北半球から見て太陽の左側)で放出されたプラズマの流れは、太陽の自転により磁力線が曲がるため、地球の方向には来ないのです。その代わりに真ん中で起きると私たちにとって危ないわけです。

-----------------------------------------------------------------------------------


人工地震であっても、太陽風が誘起する地震であっても、原因が地電流なのであれば、防御することができるかもしれない。

地電流を監視していて、もし変化があった場合、その変化を打ち消すような「逆位相電流」を流してやれば、トータルで地電流変化は現れないことになり、ナマズを手なずけることができそうだ。たかだか数千アンペアの制御でそれができるのであれば、実験段階の試みであれば、一企業の資本で可能なのでは?

Excelで作った表を印刷するとセル内の文字列の末尾が欠けてしまうことありませんか?

私は、Excel2000を使っていてこの現象に何度も出くわして、行幅を調整して印刷しなおすという手間を何度もかけることがあります。

 

セルの右端に届きそうな位置で文字列が終わる場合によく起きる現象です。

原因は、画面に表示されるときの文字間と印刷されるときの文字間が微妙にずれていることにあります。

 

ワークシートが以下のようになっていたとします

toshiのブログ-マクロ1

 

印刷ブレビューを見ると右下のセル内の文字が欠けてしまっています。また、セル内の文字の配置が統一されてないように見えます。

toshiのブログ-マクロ2

 

セルの書式設定で、文字列の配置は、上詰め、左詰め としているにもかかわらず、この配置の悪さは、文字列の先頭や末尾に無駄な改行やスペースが入っているのが原因です。入力作業者が複数居ると、各自の癖の違いで、こんなことになったりします。

 

表の規模が小さいときは、手作業で修正すれば済むのですが、ある日、何100行もある表を扱うことになり、作業にかかる膨大な時間を想うと気が遠くなりそうでした。

 

ここはひとつ、マクロで自動処理するしかないと思い、ほとんど知らないマクロプログラミングに挑戦してみました。

処理の概要は以下のようにしました。

 

選択範囲の各セルの文字列に対し、
1.先頭に改行、全角スペース、半角スペースがあれば削除する。
2.末尾に改行、全角スペース、半角スペースがあれば削除する。
3.末尾に改行を1個だけ付与する。
4.空セルに対しては何もしない。

 

3番目の「末尾に改行を1個だけ付与する」理由は、空行が1つ追加されることにより、行幅が自動的に割増されて文字が欠けるということが回避されるからです。

 

労作のテストが無事終わり、一応満足のいく動作をするようになりました。

使い方は以下のようにしてます。

 

まず、処理対象の領域を選択します
toshiのブログ-マクロ3

 

登録しておいたマクロを実行します

toshiのブログ-マクロ4

 

処理結果がワークシートに一瞬で反映されました。スッキリしてます。

toshiのブログ-マクロ5

 

印刷プレビューもいいかんじです。

toshiのブログ-マクロ6


下記に、作成したVBAプログラムを記載しておきます。

 

Sub 改行とスペース整理()

'仕様
'選択範囲の各セルの文字列に対し、
'1.先頭に改行、全角スペース、半角スペースがあれば削除する。
'2.末尾に改行、全角スペース、半角スペースがあれば削除する。
'3.末尾に改行を1個だけ付与する。
'4.空セルに対しては何もしない。

Dim R As Range
Dim i As Integer
Dim a As String
Dim b As String
Dim aLen As Integer

For Each R In Selection
  a = R.Value                          'Valueとすることで255文字を超えても扱える(Textは255文字まで)
  aLen = Len(R.Value)
  
'For i = 1 To aLen                     'テスト用
'  MsgBox Asc(Mid(a, i, 1))            '文字のアスキーコードを表示させるテスト
'Next i
  
  If aLen = 0 Then                     'セルの中が空っぽなら次のセルへ移動
    GoTo loop3
  End If

loop1:
  b = Left(a, 1)
  If b = Chr(10) Or b = Chr(-32448) Or b = Chr(32) Then
    a = Right(a, aLen - 1)             'bが改行、全角スペース、半角スペースなら、削除。loop1に飛ぶ
    aLen = aLen - 1
    GoTo loop1
  End If

loop2:
  b = Right(a, 1)
  If b = Chr(10) Or b = Chr(-32448) Or b = Chr(32) Then
    a = Left(a, aLen - 1)              'bが改行、全角スペース、半角スペースなら、削除。loop2に飛ぶ
    aLen = aLen - 1
    GoTo loop2
  End If

  a = a & Chr(10)                      '末尾に改行追加
  aLen = aLen + 1
   
  R.Value = a                          'aをセルに格納する

loop3:
Next R

End Sub

 

Windows10の標準アプリを確認、アンインストール、復活させる方法

powershell上で実行するスクリプトを紹介します。

 

1.インストールされている標準アプリの一覧を出力するスクリプト

 下記を実行すると "list.txt"というファイルに標準アプリの一覧が書き出されます。


Get-AppxPackage >list.txt # 標準アプリの一覧出力


2.標準アプリのアンインストール
 下記は、標準アプリを削除するスクリプトです。行頭の#を削除すると、アンインストールの対象になります。

Get-AppxPackage king.com.* | Remove-AppxPackage                              # king.comのアプリ
Get-AppxPackage Microsoft.MinecraftUWP | Remove-AppxPackage                  # Minecraftゲーム
Get-AppxPackage Microsoft.549981C3F5F10 | Remove-AppxPackage                 # Cortana (20H1以降)
Get-AppxPackage king.com.FarmHeroesSaga | Remove-AppxPackage                 # Farm Heroes Saga
Get-AppxPackage Microsoft.ZuneMusic | Remove-AppxPackage                     # Groove ミュージック
Get-AppxPackage Microsoft.MicrosoftSolitaireCollection | Remove-AppxPackage  # Microsoft Solitaire Collection
Get-AppxPackage Microsoft.MicrosoftOfficeHub | Remove-AppxPackage            # Office
Get-AppxPackage Microsoft.Office.OneNote | Remove-AppxPackage                # OneNote
Get-AppxPackage Microsoft.People | Remove-AppxPackage                        # People
Get-AppxPackage Microsoft.SkypeApp | Remove-AppxPackage                      # Skype
Get-AppxPackage Microsoft.XboxGamingOverlay | Remove-AppxPackage             # Xbox Game Bar (1809以降)
Get-AppxPackage Microsoft.Xbox.TCUI | Remove-AppxPackage                     # Xbox Live (1809以降)
Get-AppxPackage Microsoft.XboxApp | Remove-AppxPackage                       # Xbox 本体コンパニオン (1607以降)
Get-AppxPackage Microsoft.XboxGameOverlay | Remove-AppxPackage               # Xbox その他 (1607以降)
Get-AppxPackage Microsoft.XboxIdentityProvider | Remove-AppxPackage          # Xbox その他 (1607以降)
Get-AppxPackage Microsoft.XboxSpeechToTextOverlay | Remove-AppxPackage       # Xbox その他 (1607以降)
Get-AppxPackage Microsoft.ZuneVideo | Remove-AppxPackage                     # 映画 & テレビ
Get-AppxPackage Microsoft.YourPhone | Remove-AppxPackage                     # スマホ同期
Get-AppxPackage Microsoft.BingWeather | Remove-AppxPackage                   # 天気
Get-AppxPackage Microsoft.GetHelp | Remove-AppxPackage                       # 問い合わせ
Get-AppxPackage Microsoft.Getstarted | Remove-AppxPackage                    # ヒント
Get-AppxPackage Microsoft.WindowsFeedbackHub | Remove-AppxPackage            # フィードバックHub
Get-AppxPackage Microsoft.WindowsMaps | Remove-AppxPackage                   # マップ
Get-AppxPackage microsoft.windowscommunicationsapps | Remove-AppxPackage     # メール、カレンダー
Get-AppxPackage Microsoft.Messaging | Remove-AppxPackage                     # メッセージング
Get-AppxPackage Microsoft.OneConnect | Remove-AppxPackage                    # モバイル通信プラン
Get-AppxPackage *windowsphone* | Remove-AppxPackage                          # モバイルコンパニオン
Get-AppxPackage *bingnews* | Remove-AppxPackage                              # ニュース
Get-AppxPackage *bingfinance* | Remove-AppxPackage                           # マネー
Get-AppxPackage *bingsports* | Remove-AppxPackage                            # スポーツ
Get-AppxPackage *Microsoft.WebMediaExtensions* | remove-appxpackageWebp      # Webメディア拡張機能
Get-AppxPackage *HEIFImageExtension* | remove-appxpackage                    # HEIF画像拡張機能
Get-AppxPackage *Microsoft.DesktopAppInstaller* | remove-appxpackage         # アプリインストーラー
Get-AppxPackage NAVER.LINEwin8 | remove-appxpackage                          # LINE
Get-AppxPackage A278AB0D.MarchofEmpires | remove-appxpackage                 # マーチオブエンパイア(ゲーム)
#Get-AppxPackage Microsoft.MixedReality.Portal | Remove-AppxPackage           # Mixed Realityポータル
#Get-AppxPackage Microsoft.WindowsCamera | Remove-AppxPackage                 # カメラ
#Get-AppxPackage Microsoft.Microsoft3DViewer | Remove-AppxPackage             # 3Dビューアー (1809以降)
#Get-AppxPackage Microsoft.Print3D | Remove-AppxPackage                       # Print3D (1709以降)
#Get-AppxPackage SpotifyAB.SpotifyMusic | Remove-AppxPackage                  # Spotify (1709以降)
#Get-AppxPackage Microsoft.WindowsAlarms | Remove-AppxPackage                 # アラーム&クロック
#Get-AppxPackage Microsoft.ScreenSketch | Remove-AppxPackage                  # 切り取り & スケッチ (1809以降)
#Get-AppxPackage Microsoft.Windows.Photos | Remove-AppxPackage                # フォト
#Get-AppxPackage Microsoft.MicrosoftStickyNotes | Remove-AppxPackage          # 付箋
#Get-AppxPackage Microsoft.MSPaint | Remove-AppxPackage                       # ペイント3D
#Get-AppxPackage Microsoft.WindowsSoundRecorder | Remove-AppxPackage          # ボイスレコーダー
#Get-AppxPackage *3dbuilder* | Remove-AppxPackage                             # 3D Builder
#Get-AppxPackage *windowscalculator* | Remove-AppxPackage                     # 電卓
#Get-AppxPackage *windowsstore* | Remove-AppxPackage                          # Windows ストア

 

 

3.標準アプリの復活
下記を実行すると全ての標準アプリが復活します。処理が終わるまで時間がかかります。

Get-AppxPackage -AllUsers| Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppxManifest.xml"}

 

下記は、個別の標準アプリを復活させるスクリプトです。この例はMicrosoft Storeです。

Get-AppxPackage -allusers Microsoft.WindowsStore | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}

 

4.標準アプリの一覧

 アンインストールする前の標準アプリのリストを出力したら、下記のように125種類ありました。

Microsoft.VCLibs.140.00
Microsoft.Windows.StartMenuExperienceHost
MicrosoftWindows.Client.CBS
Microsoft.NET.Native.Runtime.1.4
Microsoft.NET.Native.Runtime.1.3
Microsoft.NET.Native.Framework.1.3
Microsoft.VCLibs.120.00.Universal
Microsoft.VCLibs.110.00.UWPDesktop
Microsoft.NET.Native.Runtime.1.6
Microsoft.VCLibs.120.00
Microsoft.XboxSpeechToTextOverlay
DB6EA5DB.Power2GoforDell
windows.immersivecontrolpanel
Microsoft.NET.Native.Runtime.2.0
DB6EA5DB.PowerDirectorforDell
Microsoft.NET.Native.Runtime.2.1
DB6EA5DB.PowerMediaPlayerforDell
Microsoft.Xbox.TCUI
Microsoft.Advertising.Xaml
Microsoft.Services.Store.Engagement
Microsoft.UI.Xaml.2.0
Microsoft.BingWeather
Microsoft.NET.Native.Framework.1.6
Microsoft.NET.Native.Framework.1.7
Microsoft.NET.Native.Framework.2.0
DellInc.DellDigitalDelivery
Microsoft.Print3D
Windows.PrintDialog
89006A2E.AutodeskSketchBook
A278AB0D.MarchofEmpires
KeeperSecurityInc.Keeper
king.com.BubbleWitch3Saga
king.com.CandyCrushSodaSaga
Microsoft.MinecraftUWP
NAVER.LINEwin8
Microsoft.WebMediaExtensions
Microsoft.NET.Native.Framework.2.1
34791E63.CanonOfficePrinterUtility
Microsoft.UI.Xaml.2.1
Microsoft.Wallet
Microsoft.3DBuilder
Microsoft.NET.Native.Framework.2.2
Microsoft.ScreenSketch
Microsoft.UI.Xaml.2.2
Microsoft.DesktopAppInstaller
Microsoft.VCLibs.140.00
Microsoft.UI.Xaml.2.3
34791E63.CanonInkjetPrintUtility
Microsoft.NET.Native.Runtime.2.2
Microsoft.NET.Native.Runtime.1.7
DB6EA5DB.MediaSuiteEssentialsforDell
Microsoft.RemoteDesktop
Microsoft.WebpImageExtension
Microsoft.Microsoft3DViewer
Microsoft.UI.Xaml.2.4
Microsoft.GetHelp
Microsoft.MSPaint
Microsoft.VP9VideoExtensions
Microsoft.HEIFImageExtension
Microsoft.XboxGamingOverlay
Microsoft.HEVCVideoExtension
Microsoft.WindowsCalculator
Microsoft.StorePurchaseApp
Microsoft.VCLibs.140.00.UWPDesktop
Microsoft.YourPhone
Microsoft.WindowsStore
Microsoft.Whiteboard
Microsoft.MixedReality.Portal
1527c705-839a-4832-9118-54d4Bd6a0c89
c5e2524a-ea46-4f67-841f-6a9465d9d515
E2A4F912-2574-4A75-9BB0-0D023378592B
F46D4000-FD22-4DB4-AC8E-4E1DDDE828FE
Microsoft.AAD.BrokerPlugin
Microsoft.AccountsControl
Microsoft.AsyncTextService
Microsoft.BioEnrollment
Microsoft.CredDialogHost
Microsoft.ECApp
Microsoft.LockApp
Microsoft.MicrosoftEdgeDevToolsClient
Microsoft.MicrosoftEdge
Microsoft.Win32WebViewHost
Microsoft.Windows.Apprep.ChxApp
Microsoft.Windows.AssignedAccessLockApp
Microsoft.Windows.CallingShellApp
Microsoft.Windows.CapturePicker
Microsoft.Windows.CloudExperienceHost
Microsoft.Windows.ContentDeliveryManager
Microsoft.Windows.NarratorQuickStart
Microsoft.Windows.OOBENetworkCaptivePortal
Microsoft.Windows.OOBENetworkConnectionFlow
Microsoft.Windows.ParentalControls
Microsoft.Windows.PeopleExperienceHost
Microsoft.Windows.PinningConfirmationDialog
Microsoft.Windows.Search
Microsoft.Windows.SecHealthUI
Microsoft.Windows.SecureAssessmentBrowser
Microsoft.Windows.XGpuEjectDialog
Microsoft.XboxGameCallableUI
MicrosoftWindows.UndockedDevKit
NcsiUwpApp
Windows.CBSPreview
Microsoft.549981C3F5F10
Microsoft.Getstarted
Microsoft.LanguageExperiencePackja-jp
Microsoft.MicrosoftOfficeHub
Microsoft.MicrosoftSolitaireCollection
Microsoft.MicrosoftStickyNotes
Microsoft.Office.OneNote
Microsoft.People
Microsoft.SkypeApp
Microsoft.Windows.Photos
Microsoft.WindowsAlarms
Microsoft.WindowsCamera
microsoft.windowscommunicationsapps
Microsoft.WindowsFeedbackHub
Microsoft.WindowsMaps
Microsoft.WindowsSoundRecorder
Microsoft.XboxApp
Microsoft.XboxGameOverlay
Microsoft.XboxIdentityProvider
Microsoft.ZuneMusic
Microsoft.ZuneVideo
Microsoft.Windows.ShellExperienceHost
Microsoft.MicrosoftEdge.Stable

 

メルマガの文章を指定バイト数で改行する処理を自動化しました。下記プログラムは、テキストファイルをダイアログから開き、50バイトごとに改行を挿入した後、別ファイル名で保存してくれます。

 

Option Explicit

Sub kaigyou()

Dim file_path As String                          'ファイルパス
Dim buf As String                                '1行バッファ
Dim i As Long                                    'for
Dim cnt As Long                                  '文字列のバイト数
Dim filename_with_extention As String            '拡張子ありのファイル名
Dim filename_without_extention As String         '拡張子なしのファイル名
Dim a As Long
Dim b As Long
Dim moji As String
Dim maxlen As Long

maxlen = 50                                                          '50バイトで改行

'----- カレントディレクトリにチェンジする(後でファイルダイヤログが展開されるところ)
With CreateObject("WScript.Shell")
  .CurrentDirectory = ThisWorkbook.Path + "\"
End With

file_path = Application.GetOpenFilename("テキストファイル,*.txt")    'ファイルダイヤログを表示

If file_path = "False" Then                                          'ダイヤログで読み込みがキャンセルされたら何もせずに終了する
  Exit Sub
End If
  
filename_with_extention = Mid(file_path, InStrRev(file_path, "\") + 1)  '\を左からサーチ
filename_without_extention = Left(filename_with_extention, InStrRev(filename_with_extention, ".") - 1)     '拡張子を除去

'----- ファイルからデータを取得する
Open file_path For Input As #1                                     'ファイルを開く
Open ThisWorkbook.Path & "\" & filename_without_extention & "_" & maxlen & "byteで改行" & ".txt" For Output As #2

Do Until EOF(1)                                                      'ファイルの終わりまで繰り返す
  Line Input #1, buf                                                 '1行バッファに読み込む
  a = Len(buf)                                                       '文字数(事前に規定の文字コード(ANSI)に変換)
  b = LenB(StrConv(buf, vbFromUnicode))                              '文字のバイト数(事前に規定の文字コード(ANSI)に変換)
  
  If b <= maxlen Then
    Print #2, buf
  
  Else
    cnt = 0                                                          'バイト数を初期化する
    For i = 1 To a
      moji = Mid(buf, i, 1)
      cnt = cnt + LenB(StrConv(moji, vbFromUnicode))                 '半角は1バイト、全角は2バイトとしてカウント
      Print #2, moji;
      If maxlen <= cnt Then                                          '文字数maxlenに達したら
        Print #2,                                                    '改行を入れる
        cnt = 0
      End If
    Next
    If cnt <> 0 Then
      Print #2,
    End If
  
  End If
Loop

Close #1                                                             'ファイルを閉じる
Close #2

End Sub

VBAでカラムの位置を指定するのに、たいていはレターで指定するのですが、配列を扱う場合などで番号で指定しなければならないことがあるので、レターと番号を相互に変換できる関数を作成しました。

 

Option Explicit

Function N2L(ByVal colNum As Long, Optional colStr As String = "") As String

'仕様
'列の数値アドレスをアルファベットアドレスに変換する

If colNum = 0 Then                                     '前回の商が0になった段階で関数の終わり
  N2L = colStr
Else
  colStr = Chr(&H41 + (colNum - 1) Mod 26) & colStr    '余から最下位文字を決定し、その下位に前の結果を連結する
  colNum = (colNum - 1) \ 26                           '商
  N2L = N2L(colNum, colStr)                            '商から次のケタの文字を生成(再帰)
End If

End Function




Function L2N(ByVal colname As String) As Long

'仕様
'列のアルファベットアドレスを数値アドレスに変換する
'アルファベットは大文字・小文字どちらでもよい
'変換例: A→1, AB→28, aBn→742

Dim leng  As Long    'アルファベットアドレスの文字数
Dim i     As Long    'forカウンタ
Dim moji  As String  'アルファベットアドレスから切り出した1文字
Dim ascii As Long    'アスキーコード

leng = Len(colname)                              'ABC方式の桁数を得る

L2N = 0                                          '戻値の初期化

If 0 < leng Then                                 '桁数が0より大なら(つまり引数が空欄でなければ)
  For i = 1 To leng
    moji = Mid(colname, i, 1)                    '左から1文字ずつ切り出す
    ascii = Asc(moji)                            '切り出した文字をASCIIコードに変換
    If &H41 <= ascii And ascii <= &H5A Then      'アルファベットの大文字ならば
      L2N = L2N * 26 + ascii - &H40              '前の値を桁上がりさせる。ASCIIを1~26の数値に変換して加算
    ElseIf &H61 <= ascii And ascii <= &H7A Then  'アルファベットの小文字ならば
      L2N = L2N * 26 + ascii - &H60              '前の値を桁上がりさせる。ASCIIを1~26の数値に変換して加算
    Else                                         'アルファベットでなければ
      L2N = 0                                    '戻値を0にする
      Exit For                                   'forを抜ける
    End If
  Next
End If

End Function

Wordを使って、全角文字だけで書かなければならない作業があったのですが、誤って半角文字が紛れ込んでしまい、後で探し出して修正するのにえらい時間がかかってしまった。この作業が今後、たびたび発生するので、なんとしても自動化が必要になり、VBAでプログラムを開発しました。

下記は、Word内で動作するプログラムです。

 

Option Explicit

Sub halfWidthString2FullWidth()

'仕様
'半角文字を赤色に変え、かつ、全角に変換する

Dim ss As Long                                                       'カーソル位置
  
'---- 画面更新の停止(高速化)
Application.ScreenUpdating = False
  
'---- 文字列選択範囲を初期化
Selection.Start = 0
Selection.End = 0

Do
  '---- カーソル位置を取得する
  ss = Selection.Start

  '---- カーソル位置から2文字選択する
  Selection.Start = ss
  Selection.End = ss + 2
 
  '---- 選択文字列が、2文字半角カナ(濁点、半濁点)ならば全角化する
  If Selection.Range.CharacterWidth = wdWidthHalfWidth Then          '半角ならば
    Selection.Range.Font.ColorIndex = wdRed                          '選択文字の色を赤色にする
    Selection.Range.CharacterWidth = wdWidthFullWidth                '文字のサイズを全角にする
  
  '---- 選択文字が、1文字半角ならば全角化する
  Else
    '---- カーソル位置から1文字選択する
    Selection.Start = ss
    Selection.End = ss + 1

    If Selection.Range.CharacterWidth = wdWidthHalfWidth Then        '半角ならば
      Selection.Range.Font.ColorIndex = wdRed                        '選択文字の色を赤色にする
      Selection.Range.CharacterWidth = wdWidthFullWidth              '文字のサイズを全角にする
    
    End If
  End If
  
  '---- カーソルを右に1つ移動する
  Selection.MoveRight Unit:=wdCharacter, Count:=1
  
  '---- カーソルが移動していなければ処理終了
  If Selection.Start = ss Then Exit Do
Loop

'---- 画面更新の再開
Application.ScreenUpdating = True
  
End Sub