User Tools

Site Tools

blog:2025-03-05-001



2025-03-05 ERROR: System.Environment.SpecialFolder'

Local Backup

  • As per the Exceptions section of documentation,the above exception is thrown when
  • ArgumentException ——- folder is not a member of System.Environment.SpecialFolder.
  • It means the OS where you are running this command does not have Environment.SpecialFolder.CommonApplicationData as one of the special folder.
  • For knowledge,
    • Environment.SpecialFolder.ApplicationData is the most common one. This folder holds per-user, non-temporary application-specific data, other than user documents. A common example would be a settings or configuration file.
    • Environment.SpecialFolder.CommonApplicationData is similar, but shared across users. You could use this to store document templates, for instance.
    • Environment.SpecialFolder.LocalApplicationData is a non-roaming alternative for ApplicationData. As such, you'd never store important data there. However, because it's non-roaming it is a good location for temporary files, caches, etcetera. It's typically on a local disk.
  • I think the problem may be that Environment.SpecialFolder.CommonApplicationData is common and shared between different users and the user with which you have logged in is not having rights to access the folder or the Visual Studio has not been started in Admin mode.
  • EDIT Look at link and try to add a manual registry Common AppData defined in the
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\

CSIDL

  • CSIDL (constant special item ID list) values provide a unique system-independent way to identify special folders used frequently by applications, but which may not have the same name or location on any given system. For example, the system folder may be “C:\Windows” on one system and “C:\Winnt” on another. These constants are defined in Shlobj.h.
Constant/value Description
CSIDL_ADMINTOOLS
FOLDERID_AdminTools
Version 5.0. The file system directory that is used to store administrative tools for an individual user. The MMC will save customized consoles to this directory, and it will roam with the user.
CSIDL_ALTSTARTUP
FOLDERID_Startup
CSIDL_APPDATA
FOLDERID_RoamingAppData Version 4.71. The file system directory that serves as a common repository for application-specific data. A typical path is C:\Documents and Settings\username\Application Data.
CSIDL_BITBUCKET
FOLDERID_RecycleBinFolder
The virtual folder that contains the objects in the user's Recycle Bin.
CSIDL_CDBURN_AREA
FOLDERID_CDBurning
Version 6.0. The file system directory that acts as a staging area for files waiting to be written to a CD. A typical path is C:\Documents and Settings\username\Local Settings\Application Data\Microsoft\CD Burning.
CSIDL_COMMON_ADMINTOOLS
FOLDERID_CommonAdminTools
Version 5.0. The file system directory that contains administrative tools for all users of the computer.
CSIDL_COMMON_ALTSTARTUP
FOLDERID_CommonStartup
The file system directory that corresponds to the nonlocalized Startup program group for all users. This value is recognized in Windows Vista for backward compatibility, but the folder itself no longer exists.
CSIDL_COMMON_APPDATA
FOLDERID_ProgramData
Version 5.0. The file system directory that contains application data for all users. A typical path is C:\Documents and Settings\All Users\Application Data. This folder is used for application data that is not user specific. For example, an application can store a spell-check dictionary, a database of clip art, or a log file in the CSIDL_COMMON_APPDATA folder. This information will not roam and is available to anyone using the computer.
CSIDL_COMMON_DESKTOPDIRECTORY
FOLDERID_PublicDesktop
The file system directory that contains files and folders that appear on the desktop for all users. A typical path is C:\Documents and Settings\All Users\Desktop.
CSIDL_COMMON_DOCUMENTS
FOLDERID_PublicDocuments
The file system directory that contains documents that are common to all users. A typical path is C:\Documents and Settings\All Users\Documents.
CSIDL_COMMON_FAVORITES
FOLDERID_Favorites
The file system directory that serves as a common repository for favorite items common to all users.
CSIDL_COMMON_MUSIC
FOLDERID_PublicMusic
Version 6.0. The file system directory that serves as a repository for music files common to all users. A typical path is C:\Documents and Settings\All Users\Documents\My Music.
CSIDL_COMMON_OEM_LINKS
FOLDERID_CommonOEMLinks
This value is recognized in Windows Vista for backward compatibility, but the folder itself is no longer used.
CSIDL_COMMON_PICTURES
FOLDERID_PublicPictures
Version 6.0. The file system directory that serves as a repository for image files common to all users. A typical path is C:\Documents and Settings\All Users\Documents\My Pictures.
CSIDL_COMMON_PROGRAMS
FOLDERID_CommonPrograms
The file system directory that contains the directories for the common program groups that appear on the Start menu for all users. A typical path is C:\Documents and Settings\All Users\Start Menu\Programs.
CSIDL_COMMON_STARTMENU
FOLDERID_CommonStartMenu
The file system directory that contains the programs and folders that appear on the Start menu for all users. A typical path is C:\Documents and Settings\All Users\Start Menu.
CSIDL_COMMON_STARTUP
FOLDERID_CommonStartup
The file system directory that contains the programs that appear in the Startup folder for all users. A typical path is C:\Documents and Settings\All Users\Start Menu\Programs\Startup.
CSIDL_COMMON_TEMPLATES
FOLDERID_CommonTemplates
The file system directory that contains the templates that are available to all users. A typical path is C:\Documents and Settings\All Users\Templates.
CSIDL_COMMON_VIDEO
FOLDERID_PublicVideos
Version 6.0. The file system directory that serves as a repository for video files common to all users. A typical path is C:\Documents and Settings\All Users\Documents\My Videos.
CSIDL_COMPUTERSNEARME
FOLDERID_NetworkFolder
The folder that represents other computers in your workgroup.
CSIDL_CONNECTIONS
FOLDERID_ConnectionsFolder
The virtual folder that represents Network Connections, that contains network and dial-up connections.
CSIDL_CONTROLS
FOLDERID_ControlPanelFolder
The virtual folder that contains icons for the Control Panel applications.
CSIDL_COOKIES
FOLDERID_Cookies
The file system directory that serves as a common repository for Internet cookies. A typical path is C:\Documents and Settings\username\Cookies.
CSIDL_DESKTOP
FOLDERID_Desktop
The virtual folder that represents the Windows desktop, the root of the namespace.
CSIDL_DESKTOPDIRECTORY
FOLDERID_Desktop
The file system directory used to physically store file objects on the desktop (not to be confused with the desktop folder itself). A typical path is C:\Documents and Settings\username\Desktop.
CSIDL_DRIVES
FOLDERID_ComputerFolder
The virtual folder that represents My Computer, containing everything on the local computer: storage devices, printers, and Control Panel. The folder can also contain mapped network drives.
CSIDL_FAVORITES
FOLDERID_Favorites
The file system directory that serves as a common repository for the user's favorite items. A typical path is C:\Documents and Settings\username\Favorites.
CSIDL_FONTS
FOLDERID_Fonts
A virtual folder that contains fonts. A typical path is C:\Windows\Fonts.
CSIDL_HISTORY
FOLDERID_History
The file system directory that serves as a common repository for Internet history items.
CSIDL_INTERNET
FOLDERID_InternetFolder
A virtual folder for Internet Explorer.
CSIDL_INTERNET_CACHE
FOLDERID_InternetCache
Version 4.72. The file system directory that serves as a common repository for temporary Internet files. A typical path is C:\Documents and Settings\username\Local Settings\Temporary Internet Files.
CSIDL_LOCAL_APPDATA
FOLDERID_LocalAppData
Version 5.0. The file system directory that serves as a data repository for local (nonroaming) applications. A typical path is C:\Documents and Settings\username\Local Settings\Application Data.
CSIDL_MYDOCUMENTS
FOLDERID_Documents
Version 6.0. The virtual folder that represents the My Documents desktop item. This value is equivalent to CSIDL_PERSONAL.
CSIDL_MYMUSIC
FOLDERID_Music
The file system directory that serves as a common repository for music files. A typical path is C:\Documents and Settings\User\My Documents\My Music.
CSIDL_MYPICTURES
FOLDERID_Pictures
Version 5.0. The file system directory that serves as a common repository for image files. A typical path is C:\Documents and Settings\username\My Documents\My Pictures.
CSIDL_MYVIDEO
FOLDERID_Videos
Version 6.0. The file system directory that serves as a common repository for video files. A typical path is C:\Documents and Settings\username\My Documents\My Videos.
CSIDL_NETHOOD
FOLDERID_NetHood
A file system directory that contains the link objects that may exist in the My Network Places virtual folder. It is not the same as CSIDL_NETWORK, which represents the network namespace root. A typical path is C:\Documents and Settings\username\NetHood.
CSIDL_NETWORK
FOLDERID_NetworkFolder
A virtual folder that represents Network Neighborhood, the root of the network namespace hierarchy.
CSIDL_PERSONAL
FOLDERID_Documents
Version 6.0. The virtual folder that represents the My Documents desktop item. This is equivalent to CSIDL_MYDOCUMENTS.
Previous to Version 6.0. The file system directory used to physically store a user's common repository of documents. A typical path is C:\Documents and Settings\username\My Documents. This should be distinguished from the virtual My Documents folder in the namespace. To access that virtual folder, use SHGetFolderLocation, which returns the ITEMIDLIST for the virtual location, or refer to the technique described in Managing the File System.
CSIDL_PRINTERS
FOLDERID_PrintersFolder
The virtual folder that contains installed printers.
CSIDL_PRINTHOOD
FOLDERID_PrintHood
The file system directory that contains the link objects that can exist in the Printers virtual folder. A typical path is C:\Documents and Settings\username\PrintHood.
CSIDL_PROFILE
FOLDERID_Profile
Version 5.0. The user's profile folder. A typical path is C:\Users\username. Applications should not create files or folders at this level; they should put their data under the locations referred to by CSIDL_APPDATA or CSIDL_LOCAL_APPDATA. However, if you are creating a new Known Folder the profile root referred to by CSIDL_PROFILE is appropriate.
CSIDL_PROGRAM_FILES
FOLDERID_ProgramFiles
Version 5.0. The Program Files folder. A typical path is C:\Program Files.
CSIDL_PROGRAM_FILESX86
FOLDERID_ProgramFilesX86
CSIDL_PROGRAM_FILES_COMMON
FOLDERID_ProgramFilesCommon
Version 5.0. A folder for components that are shared across applications. A typical path is C:\Program Files\Common. Valid only for Windows XP.
CSIDL_PROGRAM_FILES_COMMONX86
FOLDERID_ProgramFilesCommonX86
CSIDL_PROGRAMS
FOLDERID_Programs
The file system directory that contains the user's program groups (which are themselves file system directories). A typical path is C:\Documents and Settings\username\Start Menu\Programs.
CSIDL_RECENT
FOLDERID_Recent
The file system directory that contains shortcuts to the user's most recently used documents. A typical path is C:\Documents and Settings\username\My Recent Documents. To create a shortcut in this folder, use SHAddToRecentDocs. In addition to creating the shortcut, this function updates the Shell's list of recent documents and adds the shortcut to the My Recent Documents submenu of the Start menu.
CSIDL_RESOURCES
FOLDERID_ResourceDir
Windows Vista. The file system directory that contains resource data. A typical path is C:\Windows\Resources.
CSIDL_RESOURCES_LOCALIZED
FOLDERID_LocalizedResourcesDir
CSIDL_SENDTO
FOLDERID_SendTo
The file system directory that contains Send To menu items. A typical path is C:\Documents and Settings\username\SendTo.
CSIDL_STARTMENU
FOLDERID_StartMenu
The file system directory that contains Start menu items. A typical path is C:\Documents and Settings\username\Start Menu.
CSIDL_STARTUP
FOLDERID_Startup
The file system directory that corresponds to the user's Startup program group. The system starts these programs whenever the associated user logs on. A typical path is C:\Documents and Settings\username\Start Menu\Programs\Startup.
CSIDL_SYSTEM
FOLDERID_System
Version 5.0. The Windows System folder. A typical path is C:\Windows\System32.
CSIDL_SYSTEMX86
FOLDERID_SystemX86
CSIDL_TEMPLATES
FOLDERID_Templates
The file system directory that serves as a common repository for document templates. A typical path is C:\Documents and Settings\username\Templates.
CSIDL_WINDOWS
FOLDERID_Windows
Version 5.0. The Windows directory or SYSROOT. This corresponds to the %windir% or %SYSTEMROOT% environment variables. A typical path is C:\Windows.
Flags
CSIDL_FLAG_CREATE
KF_FLAG_CREATE
Version 5.0. Combine with another CSIDL to force the creation of the associated folder if it does not exist.
CSIDL_FLAG_DONT_UNEXPAND
KF_FLAG_DONT_UNEXPAND
Combine with another CSIDL constant to ensure the expansion of environment variables.
CSIDL_FLAG_DONT_VERIFY
KF_FLAG_DONT_VERIFY
Combine with another CSIDL constant, except for CSIDL_FLAG_CREATE, to return an unverified folder path with no attempt to create or initialize the folder.
CSIDL_FLAG_NO_ALIAS
KF_FLAG_NO_ALIAS
Combine with another CSIDL constant to ensure the retrieval of the true system path for the folder, free of any aliased placeholders such as %USERPROFILE%, returned by SHGetFolderLocation. This flag has no effect on paths returned by SHGetFolderPath.
CSIDL_FLAG_PER_USER_INIT
CSIDL_FLAG_MASK A mask for any valid CSIDL flag value.

Visual Studio 安裝程式:如何定位 Windows 公用文件資料夾?

  • 我正在創建一個桌面應用程序,需要將 SDF 文件安裝到SpecialFolder.CommonDocuments資料夾中(C:\Users\Public\documents在 Win 7 中)。在 Visual Studio 桌面部署專案中,如何在檔案系統編輯器中指定此資料夾?
  • 我嘗試在檔案系統編輯器中建立自訂資料夾,並將其指向屬性窗格中的 CommonDocuments 資料夾,如下所示:
  • 不幸的是,這個規範無法實現。我不想對資料夾路徑進行硬編碼,因為它在 Windows 版本之間有所不同。那麼,如何在檔案系統編輯器中指定 CommonDocuments 資料夾?感謝您的幫助。

Solution

  • 我弄清楚了這一點,並將其記錄下來以供內部使用。因此,我在此重印該文章:
  • Visual Studio 部署專案不直接支援 CommonDocuments 資料夾,但我們可以使用具有「搜尋目標機器」任務的啟動條件編輯器來新增此支援。我們將使用該任務在 Windows 登錄中搜尋公用文件資料夾的路徑,並將結果指派給名為 COMDOCFOLDER 的安裝程式屬性(實際上是一個變數)。然後我們將使用該變數來設定檔案系統編輯器中自訂資料夾的路徑。
  • 以下是執行任務的步驟。首先,在 Visual Studio 部署專案中開啟啟動條件編輯器:
  • 右鍵單擊“搜尋目標機器”,然後從上下文選單中選擇“新增註冊表搜尋”。將會出現一個新項目(見上文 1)。說出它的名字Get Common Documents Folder。在屬性窗格中(請參閱上面的 2),將「Property」屬性(我們的變數的名稱)設為COMDOCFOLDER,將「Root」屬性(要搜尋的登錄根鍵)設為vsdrrHKLM,並將「RegKey」屬性(要尋找的登錄機碼鍵)設為SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders。請注意,我們從“RegKey”屬性中省略了根鍵。最後,將「Value」屬性(我們在登錄項目中搜尋的值的名稱)設為Common Documents。 COMDOCFOLDER 變數現在將保存公共文件資料夾的路徑。
  • 接下來,前往 Visual Studio 部署專案中的檔案系統編輯器:
  • 右鍵單擊“目標電腦上的檔案系統”,然後從上下文選單中選擇“新增特殊資料夾>自訂資料夾”。將會出現一個新項目(見上文 1)。重新命名該項目Common Documents。在屬性窗格中(請參閱上面的 2),將「Property」屬性設為COMDOCFOLDER。我將「DefaultLocation」屬性設定為 Windows Vista 及更高版本的 CommonDocuments 資料夾的硬編碼值;僅當 COMDOCFOLDER 屬性傳回空值時才會使用此值,但這種情況不應該發生。安裝程式現在有一個公用文件資料夾,該資料夾指向公共文件資料夾,如 Windows 註冊表中所指定的。
  • 此 Microsoft 支援方法中提供了更多資訊。

TAGS

  • 5 person(s) visited this page until now.

Permalink blog/2025-03-05-001.txt · Last modified: 2025/03/05 08:48 by jethro

oeffentlich