Here is how you would typically create a SharedObject in Flash.
foo = SharedObject.getLocal("objectName");
If you are using SWF Studio, it is critical that you specify a value for the optional localpath parameter to the getLocal method.
foo = sharedObject.getLocal("objectName", "/");
Notice the second parameter is a single forward slash. It's a small but very important difference. Here's why...
To avoid name collisions, Flash looks at the location of the movie that is creating the shared object (normally the host domain and directory). This is done so that shared objects with the same name will not conflict with another object with the same name created by a different movie.
The localPath is an optional parameter that specifies the full or partial path to the SWF file that created the shared object. This string is used to determine where the object will be stored on the user's computer. The default value is the full path of the movie.
You can use the localPath parameter to specify where shared objects are stored. Multiple movies can access the same shared object data if the movies are looking for the object in the same place.
When your internal SWF files are unpacked to the Windows temp directory they are also put in a directory with a randomly created name. If you don't include the localpath, each instance of the exe will be looking for the shared object at a different location (because Flash uses the movie location as part of the retrieval path if you don't provide one).
By specifying a value for the localPath (for example, using "/") you get consistent paths and each time you run the projector it will be looking for the shared object at the same location.