WindowsでVS Codeが起動できない「unable to write program user data」EPERM権限エラーの解決策

WindowsでVisual Studio Code(VS Code)を起動した瞬間に「unable to write program user data(ユーザーデータを書き込めない)」やEPERMエラーが出て、ウィンドウすら開かない……。この症状はほとんどの場合、ユーザーフォルダー配下への書き込み権限、またはWindows/セキュリティソフトの保護機能が原因です。ここでは原因の切り分けから、最短で直す手順、再発しにくい恒久対策までをまとめます。

目次

現象:VS Codeが起動できず「unable to write program user data」と表示される

このトラブルは、VS Codeが起動時に必要なフォルダー(ユーザーデータや拡張機能の保存先)を作成・更新できないときに起きます。代表的なメッセージは次のとおりです。

  • EPERM: operation not permitted, mkdir 'C:\Users\<UserName>\.vscode'
  • 「次のフォルダーに書き込みできるようにしてほしい」
  • C:\Users\<UserName>\AppData\Roaming\Code
  • C:\Users\<UserName>\.vscode\extensions

「VS Codeの再インストール」を最初にやりたくなるのですが、権限や保護が原因だと再インストールだけでは直らないことが多いです。まずは“どこへの書き込みが止められているか”を押さえるのが近道です。

エラー/症状意味まずやること
EPERM / operation not permitted / mkdirフォルダー作成が権限・保護・ロックで拒否されている管理者起動で切り分け、フォルダー権限と保護設定を確認
AppData\Roaming\Code への書き込み要求ユーザーデータ(設定・キャッシュ等)の保存に失敗アクセス許可/セキュリティソフト/OneDrive同期を確認
.vscode\extensions への書き込み要求拡張機能の保存先が書き込めないフォルダー所有者・継承・読み取り専用属性を確認

VS Codeが書き込みたい場所(ユーザーデータと拡張機能)

VS Codeは“インストール先”とは別に、ユーザーごとの設定や拡張機能をユーザープロファイル配下に保存します。起動時は特にここへ書き込みが発生します。

種類既定の保存先(Windows)中身の例書き込みが止まると…
ユーザーデータ%APPDATA%\Code(例:C:\Users\<User>\AppData\Roaming\Code)設定、キーバインド、スニペット、拡張機能の状態、キャッシュ起動できない/設定が保存できない
拡張機能%USERPROFILE%\.vscode\extensions(例:C:\Users\<User>\.vscode\extensions)拡張機能本体起動できない/拡張機能が壊れる/更新できない

つまり、ユーザーフォルダー配下なのに書き込みが拒否されている状態が根本です。多くは「アクセス許可(ACL)」「所有者」「保護機能」「同期/監視ソフト」のいずれかが引き金になります。

原因の傾向:なぜユーザーフォルダーなのに書き込めないのか

同じEPERMでも背景は複数あります。よくあるパターンを押さえておくと、最短で当たりを付けられます。

よくある原因起こりやすい状況特徴
フォルダー権限(ACL)の崩れユーザープロファイルの移行、バックアップ復元、共有PC、別ユーザーで作成したフォルダー特定フォルダーだけ書き込めない/所有者が別ユーザーになっている
Windows Defenderの「フォルダーアクセスの制御」など保護機能ランサムウェア対策を有効化、企業PCの標準設定ユーザーディレクトリへの書き込みがブロックされ、通知が出ない場合も
セキュリティソフト/EDRによる監視・隔離新規PC導入直後、ソフト更新直後、ポリシー強化VS Codeだけ弾かれる/一時的に動いたり止まったりする
OneDrive同期や「PCフォルダーのバックアップ」でのリダイレクトドキュメント/デスクトップをOneDriveへ移動、プロファイル周りが同期対象同期競合・ファイルロック・権限が絡み、作成/更新に失敗する
フォルダーがファイルとして存在する/読み取り専用属性手動で誤って作成、ツールで属性変更.vscodeがフォルダーではなく“ファイル”になっている、または読み取り専用扱い

作業前の注意:設定や拡張を守りたい人のバックアップ

フォルダー削除やリセットは効果が高い反面、設定や拡張が初期化されることがあります。心配な場合は、最小限だけバックアップしてから進めると安全です。

  • ユーザー設定:%APPDATA%\Code\User(settings.json、keybindings.json、snippets など)
  • 拡張機能本体:%USERPROFILE%\.vscode\extensions
  • ワークスペース設定:プロジェクト直下の .vscode フォルダー(こちらは“プロジェクト用”なので別物です)

バックアップはフォルダーを別場所へコピーするだけでOKです。起動できない状況でもエクスプローラーからコピーできます。

最短で直す:上から順に試す現実的な対処フロー

原因が「権限」なのか「保護機能」なのかを短時間で切り分けるため、次の順番で試すのがおすすめです。上ほど安全で、効果が出やすい手順です。

やること目的難易度設定が消える可能性
管理者として起動権限起因かどうかを即判断低低
フォルダーのアクセス許可/所有者を修正恒久対策(通常起動で書き込める状態に戻す)中低
Windows Defender/セキュリティソフトのブロック解除保護機能が原因ならここで解消中低
問題のフォルダーを退避(リネーム)して再生成破損・不整合を一掃中中
ユーザーデータ/拡張機能の保存先を変更環境依存の制限を回避中低〜中
再インストール(ユーザーデータは残す/消すを選ぶ)インストール破損や競合を解消中手順次第

対処法:管理者としてVS Codeを起動して切り分ける

まずは最短の切り分けです。VS Codeアイコンを右クリックして「管理者として実行」を選びます。

  • これで起動できるなら、原因はほぼ権限・所有者・保護機能のどれかです。
  • 逆に、管理者でも起動できないなら、セキュリティソフトの強制ブロックや、ファイル破損の可能性が上がります。

ただし、管理者起動は“応急処置”としては有効でも、常用はおすすめしません。管理者権限での編集は事故の範囲が広がりますし、拡張機能のインストール/更新が「管理者でないと動かない」状態に引きずられることもあります。次の手順で通常起動でも動く状態に戻しましょう。

対処法:該当フォルダーのアクセス許可を見直す(フルコントロール付与)

エラーに出ているフォルダー(例:%APPDATA%\Code、%USERPROFILE%\.vscode\extensions)に対して、自分のユーザーが書き込みできるか確認します。

エクスプローラーで確認する手順

  1. 対象フォルダーを右クリック → 「プロパティ」
  2. 「セキュリティ」タブ → 自分のユーザー名(またはUsers)を選択
  3. 「編集」を押し、「書き込み」が許可されているか確認(可能なら「フル コントロール」)
  4. 所有者が別ユーザーの場合は、「詳細設定」から所有者を自分に変更し、継承も有効にする

ポイントは「許可」のチェックだけではなく、所有者と継承です。ユーザープロファイルを移行した直後などは、所有者が古いSIDのまま残っていることがあります。見た目は権限がありそうでも、実際は拒否されるケースがあるため、所有者まで確認すると成功率が上がります。

コマンドで状態を確認する(上級者向け)

GUIで追いにくい場合は、権限を確認できます。コマンドプロンプトを開いて次を実行します。

icacls "%APPDATA%\Code"
icacls "%USERPROFILE%\.vscode\extensions"

(F)(フル)や(M)(変更)などが自分のユーザーに付いているかを確認します。もし明らかに不足しているなら、管理者権限のコマンドプロンプトで付与します。

icacls "%APPDATA%\Code" /grant %USERNAME%:(OI)(CI)F /T
icacls "%USERPROFILE%\.vscode\extensions" /grant %USERNAME%:(OI)(CI)F /T

企業PCや共有PCではポリシー上、ユーザーが自由に権限変更できないことがあります。その場合は情シス・管理者へ相談するのが安全です。

対処法:Windows Defenderの「フォルダーアクセスの制御」やセキュリティソフトを確認する

権限を直しても再発する、あるいは特定のタイミングで急に起動できなくなった場合は、保護機能がVS Codeの書き込みをブロックしている可能性があります。

Windows Defender(ランサムウェア対策)でブロックされる典型

  • 「フォルダーアクセスの制御(Controlled folder access)」が有効で、未許可のアプリが保護フォルダーに書き込もうとしてブロックされる
  • 通知が出ない/気付きにくい設定になっている

この場合は、Windows セキュリティの設定画面でブロック履歴や保護設定を確認し、VS Code(Code.exe)を許可アプリに追加することで改善することがあります。企業PCではポリシーで固定されていることもあるため、無理に触らず管理者に相談してください。

他社製セキュリティソフト/EDRの場合

セキュリティソフトのリアルタイム監視が、拡張機能フォルダーへの展開(多数の小ファイルの作成)を“怪しい挙動”と判定して止めることがあります。次のような対策が現実的です。

  • VS Code本体(Code.exe)を許可リストへ
  • %APPDATA%\Code と %USERPROFILE%\.vscode\extensions を監視除外へ
  • 除外が難しい場合は、保存先を別ドライブへ移動(後述)

対処法:問題のフォルダーを退避(削除/リネーム)して作り直させる

権限・保護が整っているはずなのに起動できない場合、フォルダーの中身が壊れている、または不整合が起きている可能性があります。VS Codeを完全に終了したうえで、フォルダーをいったん退避して再生成させます。

安全のため「削除」より「リネーム」がおすすめ

  1. タスクマネージャーで Code.exe が残っていないことを確認
  2. 次のフォルダーをリネーム(例:末尾に.bakを付ける)
  • %APPDATA%\Code → Code.bak
  • %USERPROFILE%\.vscode\extensions → extensions.bak

リネーム後にVS Codeを起動すると、必要なフォルダーが再生成されます。起動できたら、バックアップからsettings.jsonやスニペットだけ戻す、といった“必要最小限の復元”にすると再発しにくいです。

逆に、バックアップを丸ごと戻して同じ症状が出るなら、壊れているのは中身(設定/キャッシュ/拡張)側です。次の「設定のリセット」や「拡張の切り分け」を試してください。

対処法:設定をリセットして「設定ファイルの破損」を切り分ける

設定の破損は頻度は高くないものの、拡張機能の設定やJSON編集ミスなどが重なると起動時に問題を起こすことがあります。確実なリセット方法は、設定ファイルを退避して起動を試すことです。

最低限のリセット対象

  • %APPDATA%\Code\User\settings.json
  • %APPDATA%\Code\User\keybindings.json
  • %APPDATA%\Code\User\argv.json(起動オプションをいじっている場合)

例えば、settings.json を settings.json.bak にリネームして起動できるか確認します。起動できたら、設定を少しずつ戻すか、VS Codeの設定画面から改めて必要な項目だけ設定し直すのが安全です。

拡張機能が原因かも?起動オプションで切り分ける

拡張機能の展開・初期化でこけている場合は、拡張機能を無効化して起動できるか確認します。

code --disable-extensions

これで起動できるなら、拡張機能フォルダーの破損、または特定拡張の不具合が疑わしいです。.vscode\extensionsを退避してから起動→拡張を必要なものから入れ直す、という流れが効果的です。

対処法:ユーザーデータ/拡張機能の保存先を変更して回避する

企業PCのポリシーや、同期・監視ソフトの都合で「ユーザープロファイル配下に書けない」状態がどうしても解消できないことがあります。その場合は、VS Codeの保存先を別のフォルダーへ逃がすと回避できるケースがあります。

一時的に別の保存先で起動する(切り分けにも便利)

次のように起動すると、ユーザーデータと拡張機能の保存先を任意フォルダーに変更できます(フォルダーは事前に作成しておくと確実です)。

code --user-data-dir "D:\vscode-userdata" --extensions-dir "D:\vscode-extensions"
  • この起動が成功するなら、やはり元の保存先(%APPDATA%\Codeや%USERPROFILE%\.vscode)側に原因があります。
  • 回避策として運用する場合は、バックアップや同期(OneDrive等)の対象にするかは慎重に検討してください。

Portable(ポータブル)運用という選択肢

VS Codeには“ポータブル”に近い運用ができ、同じフォルダー配下にユーザーデータをまとめることも可能です。USBメモリや、書き込み制限の少ない場所へ丸ごと置けるため、制限の強い環境では有効なことがあります。

ただし、インストール先をProgram Filesなど書き込み制限の強い場所に置くと、今度はそこに書き込めず同じ問題を起こします。ポータブル運用をするなら、書き込み可能な場所(例:ユーザー配下やデータドライブ)に置くのが基本です。

対処法:VS Codeの再インストールで改善するケース

権限や保護が原因の場合、再インストールだけでは直りませんが、次のような条件では再インストールが効くこともあります。

  • VS Code本体の更新が途中で失敗して壊れている
  • インストーラー版とZIP版の混在などでファイルが競合している
  • Insiders版/Stable版を行き来して設定が混ざった

再インストール前に、ユーザーデータ(%APPDATA%\Code)と拡張(%USERPROFILE%\.vscode\extensions)のバックアップを取っておけば、必要に応じて復元できます。アンインストール時に「ユーザーデータも削除」のチェックがある場合は、意図しない初期化を避けるために注意してください。

どうしても直らないときの追加チェック(見落としがちなポイント)

最後に、現場で意外と効く“見落としポイント”をまとめます。

チェック項目確認方法対処の方向性
VS Codeがバックグラウンドで残っていないかタスクマネージャーでCode.exeを確認プロセス終了→再起動
対象フォルダーが“ファイル”になっていないかC:\Users\<User>\.vscode を開けるか確認ファイルなら退避してフォルダーを作り直す
ディスク容量/ファイルシステムの問題空き容量、chkdsk、イベントログ容量確保・修復
ユーザープロファイルのリダイレクト/ローミング企業PC設定、%APPDATA% の実体がネットワーク先か保存先変更(--user-data-dir)や管理者へ相談
OneDrive同期中のロック/競合同期アイコン、競合ファイル、同期停止で再現するか同期対象から外す/一時停止して起動確認

再発防止:管理者起動に頼らず“通常権限で安定稼働”させる

一度直っても、根本原因が残るとアップデートや拡張更新のたびに詰まります。再発しがちな環境では次の考え方が有効です。

  • ユーザープロファイル配下の権限を正す:VS Codeだけでなく他アプリも安定しやすい
  • 保護機能の運用ルールを決める:Defender/EDRで例外を作るなら、対象を絞って管理する
  • 同期(OneDrive等)との相性を意識する:大量の小ファイルを頻繁に更新する領域は同期対象にしないほうが無難
  • “移行”のときは所有者と継承を確認:プロファイル移行・復元直後に問題が出やすい

特に企業PCでは、ユーザー側で直せない制限(グループポリシー、EDRの強制設定、アクセス権の統制)が存在します。管理者起動で一時的に動いても、ポリシー更新で再発することがあります。再発が続く場合は、エラーメッセージに出ているパスと、いつから発生したか(アップデート直後/PC移行直後など)を添えて情シスへ共有すると解決が早いです。

よくある質問

「プロジェクト内の .vscode フォルダー」と混同してしまいます

.vscode という名前は2種類あります。%USERPROFILE%\.vscode はユーザー全体の拡張機能置き場です。一方、プロジェクト直下の .vscode はワークスペース設定(settings.json 等)です。今回のエラーで問題になるのは前者であることが多いです。

管理者として起動したら直りました。もうそれで良いですか?

応急処置としてはアリですが、恒久対策としてはおすすめしません。通常起動で書き込めない状態が残っているため、拡張機能の更新や設定保存でまた詰まる可能性があります。フォルダー権限や保護機能の見直しまで行うと安定します。

フォルダーを削除したら設定が消えました

%APPDATA%\Code\User の中にユーザー設定が入っています。削除前にバックアップしていれば戻せます。バックアップが無い場合でも、拡張機能や設定がクラウド同期(Settings Sync)されていれば復元できることがあります。

拡張機能だけが壊れている気がします

code --disable-extensions で起動できるなら、拡張機能側が原因の可能性が高いです。.vscode\extensions を退避して起動→必要な拡張を少しずつ入れ直すのが、最短で安定させる方法です。

まとめ:ポイントは「書き込み先」を正常化すること

VS Codeの「unable to write program user data」やEPERMは、VS Code自体が悪いというより、VS Codeが書き込みたい場所(ユーザーデータ/拡張機能フォルダー)にアクセスできないことが原因です。管理者起動で切り分け、権限・所有者・保護機能・同期/監視のどれがブロックしているかを特定し、通常権限で書き込める状態に戻すことが再発防止の近道です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次