问题
I have a Visual Basic 6.0 application that I want to install for All Users, for example, the setting are held in a single spot regardless who logs into the computer. I have the following code to locate the common location:
Const ssfCOMMONAPPDATA = &H23
Dim strAllUsersPath As String
strAllUsersPath = CreateObject("Shell.Application").NameSpace(ssfCOMMONAPPDATA).Self.Path
On Windows XP, this path points to C:\Documents and Settings\All Users\Application Data\
folder. The setup copies the settings file there and everything is great. The Visual Basic 6.0 app can change it at any time.
On Windows 7, this path points to c:\ProgramData
folder. The setup, which requires administrator privileges, copies the file there. However, when my Visual Basic 6.0 application starts and accesses the file, Windows 7 copies the settings file to a C:\Users{USER LOGIN}\AppData\Local\VirtualStore\ and performs all the operations on it there. As a result, because for each user, Windows 7 copies the settings file to a separate user directory, the users end up having a different settings file.
Am I storing the file in the wrong location? Am I doing it in the incorrect manner?
回答1:
This one has bitten me too. The ProgramData
folder has shared Read Access, no shared write access. You can of course change the permission on the folder during install, but I think that goes contrary to how Microsoft meant it to be.
See this other question for some useful links
How Microsoft thinks it should be done.
来源:https://stackoverflow.com/questions/10507233/how-to-write-to-the-common-application-data-folder