---
# System prepended metadata

title: 為何 C++ 程式無法在 Program Files 新增資料夾？
tags: [lab 專案, C++, 問題記錄]

---

# 為何 C++ 程式無法在 Program Files 新增資料夾？
###### tags: `C++`, `問題記錄`, `lab 專案`

📌 **為何 C++ 程式無法在 C:/Program Files 新增資料夾？**
➡️ 原因
      程式的 UAC 權限不足，無法存取 “C:/Program Files”
      必須調整程式的 UAC 權限，讓程式能以 “系統管理員” 執行

➡️ 解決方式
      專案 > 屬性 > 連結器 (Linker) > 資訊清單檔 (Manifest File)
      > UAC 執行層級 (UAC Exec. Level)
      > 將預設的「asInvoker (/level='asInvoker')」
         改為「requireAdministrator (/level='requireAdministrator')」
      > 原本 IDE 不是 "以系統管理員開啟"
         所以更改 C++ 程式專案的 UAC 後直接執行程式，應會被 IDE 要求重啟
         重啟再執行一次，C++ 程式就可在 C:/Program Files 新增資料夾

📌 **程式安裝在Program Files 或 Program Files (x86)，有什麼差別？**
      64 位元的程式會自動安裝在 Program Files
      32 位元的程式會自動安裝在 Program Files (x86)

📌 **為何許多支援 64 位元的軟體,安裝路徑還是放在 `C:\Program Files (x86)`？**
      因為這些軟體所使用的 Installer (安裝程式) 仍然是 32 bits 的版本～沒有升級
      當解譯路徑 %PROGRAMFILES% 時, Windows 會回應 C:\Program Files (x86)
      很可能是十幾年前舊版的 Installer 買了之後就一直沿用
      造成安裝過程都會放在 (x86) 下面

📌 **相關資料 - 補充**
      ➡️ Run VBS script as elevated user (UAC)
      https://www.itsupportguides.com/knowledge-base/windows-7/windows-7-run-vbs-script-as-elevated-user-uac/

📌 **參考資料**
1.  C++: Run program as administrator
https://stackoverflow.com/questions/19617955/c-run-program-as-administrator

2. 【客戶詢問】程式安裝在Program Files 或 Program Files (x86)，有什麼差別？
https://ofeyhong.pixnet.net/blog/post/224888671

3.  為何許多支援 64 位元的軟體,安裝路徑還是放在 `C:\Program Files (x86)`？
https://ithelp.ithome.com.tw/questions/10199630