A Windows Vista forum. Vista Banter

Welcome to Vista Banter.

You are currently viewing our boards as a guest which gives you limited access to view most discussions, articles and access our other FREE features. By joining our free community you will have access to ask questions and reply to others posts, upload your own photos and access many other special features. Registration is fast, simple and absolutely free so please, join our community today!

If you have any problems with the registration process or your account login, please contact contact support.

Go Back   Home » Vista Banter forum » Microsoft Windows Vista » Windows Vista File Management
Site Map Home Register Authors List Search Today's Posts Mark Forums Read Web Partners

Windows Vista File Management Issues or questions in relation to Vista's file management. (microsoft.public.windows.vista.file_management)

File Locations to Avoid Virtualization



 
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old January 25th 07, 11:02 PM posted to microsoft.public.windows.vista.file_management
Wayne Hartell
external usenet poster
 
Posts: 13
Default File Locations to Avoid Virtualization

This has probably been asked before but I'm running out of time to get an
answer and my initial search turned up empty.

We have an application that runs as a stand alone application and also a
hosted "module" of 3rd party applications. We have found just recently that
one of our 3rd party host applications is certified on Vista and seeing our
Stand Alone application works on Vista (after getting past a couple of curly
issues; at least one MS bug in there) we want to also support our
application running as a module in the 3rd party app.

Problem that we are experiencing is that the 3rd party has done whatever
they need to do in terms of the manifest or what have you to indicate that
their application is Vista aware. This of course turns of file system
virtualization and we are running into a couple of issues when running under
that environment. The main issue is that I am finding our application cannot
access certain files that it should be able to access. We are basically
getting errors saying we cannot access the data in our company folder under
(C:\ProgramData\All Users\Company Name\Application Name\). But hold on I
thought, isn't this location the "correct" location for application data
that is shared between users? Then I thought that maybe our code is getting
to this location through virtualization and seeing it is turned off now we
hit the problem. So I tracked down the code and it seems we are doing the
right thing, or what I at least expected to be the right thing... we are
using....

Environment.GetFolderPath(Environment.SpecialFolde r.ApplicationData)
Environment.GetFolderPath(Environment.SpecialFolde r.LocalApplicationData)
Environment.GetFolderPath(Environment.SpecialFolde r.CommonApplicationData)
Environment.GetFolderPath(Environment.SpecialFolde r.Personal)

to build up all of our working directories.

So why is this giving us grief on Vista? Isn't this the recommended
practice? Seems like the first one on the list is giving us grief and I am
reading that this is supposed to be for roaming profiles. Maybe that is the
issue?

Please help, or let me know if any additional information is required....


  #2 (permalink)  
Old January 26th 07, 12:47 AM posted to microsoft.public.windows.vista.file_management
Wayne Hartell
external usenet poster
 
Posts: 13
Default File Locations to Avoid Virtualization (Extra Details)

Actually I have Vista open now and the location the starting files are
deployed to is:

C:\ProgramData\Company Name\Application Name\SubFolder\SubFolder\

not...

C:\ProgramData\All Users\Company Name\Application Name\

which I think is correct, and here is the exception...

System.UnauthorizedAccessException: Access to the path
'C:\ProgramData\Company Name\Product Name\8\Libraries\LiquidLibrary.xml'
is denied.

So the file is in the correct location (as far as I am aware) and we are
trying to access it at the correct location, yet we are denied? Why?


"Wayne Hartell" wrote in message
This has probably been asked before but I'm running out of time to get an
answer and my initial search turned up empty.

We have an application that runs as a stand alone application and also a
hosted "module" of 3rd party applications. We have found just recently
that one of our 3rd party host applications is certified on Vista and
seeing our Stand Alone application works on Vista (after getting past a
couple of curly issues; at least one MS bug in there) we want to also
support our application running as a module in the 3rd party app.

Problem that we are experiencing is that the 3rd party has done whatever
they need to do in terms of the manifest or what have you to indicate that
their application is Vista aware. This of course turns of file system
virtualization and we are running into a couple of issues when running
under that environment. The main issue is that I am finding our
application cannot access certain files that it should be able to access.
We are basically getting errors saying we cannot access the data in our
company folder under (C:\ProgramData\All Users\Company Name\Application
Name\). But hold on I thought, isn't this location the "correct" location
for application data that is shared between users? Then I thought that
maybe our code is getting to this location through virtualization and
seeing it is turned off now we hit the problem. So I tracked down the code
and it seems we are doing the right thing, or what I at least expected to
be the right thing... we are using....

Environment.GetFolderPath(Environment.SpecialFolde r.ApplicationData)
Environment.GetFolderPath(Environment.SpecialFolde r.LocalApplicationData)
Environment.GetFolderPath(Environment.SpecialFolde r.CommonApplicationData)
Environment.GetFolderPath(Environment.SpecialFolde r.Personal)

to build up all of our working directories.

So why is this giving us grief on Vista? Isn't this the recommended
practice? Seems like the first one on the list is giving us grief and I am
reading that this is supposed to be for roaming profiles. Maybe that is
the issue?

Please help, or let me know if any additional information is required....



  #3 (permalink)  
Old January 26th 07, 01:55 AM posted to microsoft.public.windows.vista.file_management
Wayne Hartell
external usenet poster
 
Posts: 13
Default File Locations to Avoid Virtualization (Extra Details)

Yet more investigation and I am pretty sure that this folder is the
problem...

Environment.SpecialFolder.CommonApplicationData

Under XP this is:
C:\Documents and Settings\All Users\Application Data

Under Vista this is:
C:\ProgramData\

The problem is under Vista this folder is not writeable unless running as as
admin!!! What the? WHERE do we store application data that is shared between
users then????????????????? SpecialFolder.ApplicationData,
LocalApplicationData are both user specific!

I have to missing something right????


"Wayne Hartell" wrote in message
...
Actually I have Vista open now and the location the starting files are
deployed to is:

C:\ProgramData\Company Name\Application Name\SubFolder\SubFolder\

not...

C:\ProgramData\All Users\Company Name\Application Name\

which I think is correct, and here is the exception...

System.UnauthorizedAccessException: Access to the path
'C:\ProgramData\Company Name\Product
Name\8\Libraries\LiquidLibrary.xml' is denied.

So the file is in the correct location (as far as I am aware) and we are
trying to access it at the correct location, yet we are denied? Why?


"Wayne Hartell" wrote in message
This has probably been asked before but I'm running out of time to get an
answer and my initial search turned up empty.

We have an application that runs as a stand alone application and also a
hosted "module" of 3rd party applications. We have found just recently
that one of our 3rd party host applications is certified on Vista and
seeing our Stand Alone application works on Vista (after getting past a
couple of curly issues; at least one MS bug in there) we want to also
support our application running as a module in the 3rd party app.

Problem that we are experiencing is that the 3rd party has done whatever
they need to do in terms of the manifest or what have you to indicate
that their application is Vista aware. This of course turns of file
system virtualization and we are running into a couple of issues when
running under that environment. The main issue is that I am finding our
application cannot access certain files that it should be able to access.
We are basically getting errors saying we cannot access the data in our
company folder under (C:\ProgramData\All Users\Company
Name\Application Name\). But hold on I thought, isn't this location
the "correct" location for application data that is shared between users?
Then I thought that maybe our code is getting to this location through
virtualization and seeing it is turned off now we hit the problem. So I
tracked down the code and it seems we are doing the right thing, or what
I at least expected to be the right thing... we are using....

Environment.GetFolderPath(Environment.SpecialFolde r.ApplicationData)
Environment.GetFolderPath(Environment.SpecialFolde r.LocalApplicationData)
Environment.GetFolderPath(Environment.SpecialFolde r.CommonApplicationData)
Environment.GetFolderPath(Environment.SpecialFolde r.Personal)

to build up all of our working directories.

So why is this giving us grief on Vista? Isn't this the recommended
practice? Seems like the first one on the list is giving us grief and I
am reading that this is supposed to be for roaming profiles. Maybe that
is the issue?

Please help, or let me know if any additional information is required....





  #4 (permalink)  
Old January 26th 07, 03:43 AM posted to microsoft.public.windows.vista.file_management
Wayne Hartell
external usenet poster
 
Posts: 13
Default File Locations to Avoid Virtualization (Extra Details)

Pretty active group this... I'm talking to myself.

I think I'm resigned to the fact that if we want a folder under
C:\ProgramData\ under Vista we had better be creating those folders and
setting the security at deployment time when we have admin rights (if that's
even possible).

The joys of Vista....


"Wayne Hartell" wrote in message
...
Yet more investigation and I am pretty sure that this folder is the
problem...

Environment.SpecialFolder.CommonApplicationData

Under XP this is:
C:\Documents and Settings\All Users\Application Data

Under Vista this is:
C:\ProgramData\

The problem is under Vista this folder is not writeable unless running as
as admin!!! What the? WHERE do we store application data that is shared
between users then????????????????? SpecialFolder.ApplicationData,
LocalApplicationData are both user specific!

I have to missing something right????


"Wayne Hartell" wrote in message
...
Actually I have Vista open now and the location the starting files are
deployed to is:

C:\ProgramData\Company Name\Application Name\SubFolder\SubFolder\

not...

C:\ProgramData\All Users\Company Name\Application Name\

which I think is correct, and here is the exception...

System.UnauthorizedAccessException: Access to the path
'C:\ProgramData\Company Name\Product
Name\8\Libraries\LiquidLibrary.xml' is denied.

So the file is in the correct location (as far as I am aware) and we are
trying to access it at the correct location, yet we are denied? Why?


"Wayne Hartell" wrote in message
This has probably been asked before but I'm running out of time to get
an answer and my initial search turned up empty.

We have an application that runs as a stand alone application and also a
hosted "module" of 3rd party applications. We have found just recently
that one of our 3rd party host applications is certified on Vista and
seeing our Stand Alone application works on Vista (after getting past a
couple of curly issues; at least one MS bug in there) we want to also
support our application running as a module in the 3rd party app.

Problem that we are experiencing is that the 3rd party has done whatever
they need to do in terms of the manifest or what have you to indicate
that their application is Vista aware. This of course turns of file
system virtualization and we are running into a couple of issues when
running under that environment. The main issue is that I am finding our
application cannot access certain files that it should be able to
access. We are basically getting errors saying we cannot access the data
in our company folder under (C:\ProgramData\All Users\Company
Name\Application Name\). But hold on I thought, isn't this location
the "correct" location for application data that is shared between
users? Then I thought that maybe our code is getting to this location
through virtualization and seeing it is turned off now we hit the
problem. So I tracked down the code and it seems we are doing the right
thing, or what I at least expected to be the right thing... we are
using....

Environment.GetFolderPath(Environment.SpecialFolde r.ApplicationData)
Environment.GetFolderPath(Environment.SpecialFolde r.LocalApplicationData)
Environment.GetFolderPath(Environment.SpecialFolde r.CommonApplicationData)
Environment.GetFolderPath(Environment.SpecialFolde r.Personal)

to build up all of our working directories.

So why is this giving us grief on Vista? Isn't this the recommended
practice? Seems like the first one on the list is giving us grief and I
am reading that this is supposed to be for roaming profiles. Maybe that
is the issue?

Please help, or let me know if any additional information is
required....







  #5 (permalink)  
Old January 26th 07, 12:46 PM posted to microsoft.public.windows.vista.file_management
Jimmy Brush
external usenet poster
 
Posts: 827
Default File Locations to Avoid Virtualization (Extra Details)

Hello,

Vista is set up such that files saved from one user's account cannot be
modified from another user's account. This enforces isolation between one
user account and another, as well as protects settings/files that affect the
state of the entire system.

Your program should indeed install whatever machine-wide state it needs in
ProgramData at install time - this folder is shared between all user
accounts; however, it is a read-only type of shared . Administrator
privileges are needed to modify these files if the current user did not
create them because they affect the entire computer, not just the current
user account.

In accordance with this policy, the security on the ProgramData folder is as
follows:

System: Full Control over files & folders
Administrators: Full Control over files & folders
Creator/Owner: Full Control over files & folders
Users: Read Only for files, but can create new folders and files

What this accomplishes is that it allows any user to read and create a
folder/file anywhere inside the ProgramData folder, but the user can only
modify the files that were created from their user account; they cannot
modify files created from another user account.

The only exception that I know of to this policy is the c:\users\public
folder, which is designed to allow users to store documents and such that
they want to be world read/writable.


--
- JB
Microsoft MVP - Windows Shell/User

Windows Vista Support Faq
http://www.jimmah.com/vista/

  #6 (permalink)  
Old January 27th 07, 11:50 PM posted to microsoft.public.windows.vista.file_management
Wayne Hartell
external usenet poster
 
Posts: 13
Default File Locations to Avoid Virtualization (Extra Details)

Hi Jimmy,

Thanks for the explanation.

Do you know if there is any way to obtain the C:\Users\Public\ folder
location through the SpecialFolder APIs or is this just something specific
to Vista that doesn't have an associated API?

Either way I think the best solution for my company's application is to
simply store the data in a user specific location (for some reason we store
information in three different places (local, roaming, shared) - I'm not the
one who designed it that way!) as I don't think there is any real need to
make the data available machine wide other than it would have been "nice" to
share between users on the same machine.

Regards,
Wayne.


"Jimmy Brush" wrote in message
...
Hello,

Vista is set up such that files saved from one user's account cannot be
modified from another user's account. This enforces isolation between one
user account and another, as well as protects settings/files that affect
the state of the entire system.

Your program should indeed install whatever machine-wide state it needs in
ProgramData at install time - this folder is shared between all user
accounts; however, it is a read-only type of shared . Administrator
privileges are needed to modify these files if the current user did not
create them because they affect the entire computer, not just the current
user account.

In accordance with this policy, the security on the ProgramData folder is
as follows:

System: Full Control over files & folders
Administrators: Full Control over files & folders
Creator/Owner: Full Control over files & folders
Users: Read Only for files, but can create new folders and files

What this accomplishes is that it allows any user to read and create a
folder/file anywhere inside the ProgramData folder, but the user can only
modify the files that were created from their user account; they cannot
modify files created from another user account.

The only exception that I know of to this policy is the c:\users\public
folder, which is designed to allow users to store documents and such that
they want to be world read/writable.


--
- JB
Microsoft MVP - Windows Shell/User

Windows Vista Support Faq
http://www.jimmah.com/vista/



  #7 (permalink)  
Old January 28th 07, 12:30 AM posted to microsoft.public.windows.vista.file_management
Jimmy Brush
external usenet poster
 
Posts: 827
Default File Locations to Avoid Virtualization (Extra Details)

snip
Hi Jimmy,

Thanks for the explanation.


You're welcome

Do you know if there is any way to obtain the C:\Users\Public\ folder
location through the SpecialFolder APIs or is this just something specific
to Vista that doesn't have an associated API?


C:\users\public\ roughly corresponds to c:\documents and settings\all
users\, so you can use some of the CSIDL_COMMON_* idl's to get in there, for
instance:

CSIDL_COMMON_DOCUMENTS
CSIDL_COMMON_MUSIC
CSIDL_COMMON_PICTURES
CSIDL_COMMON_VIDEO

I don't think there's a way to just get the root "common" folder. Which is
kind of a good thing, I guess, since the common folder in Vista is split up
into a bunch of different folders, as compared to XP.

Either way I think the best solution for my company's application is to
simply store the data in a user specific location


I agree .

(for some reason we store information in three different places (local,
roaming, shared) - I'm not the one who designed it that way!) as I don't
think there is any real need to make the data available machine wide other
than it would have been "nice" to share between users on the same machine.


Yeah, it is kind of a pain to follow all of these little programming rules
in the name of security. However, we've seen what happens when these kind of
rules aren't enforced (the culmination of the Windows 9x product line).

Regards,
Wayne.




--
- JB
Microsoft MVP - Windows Shell/User

Windows Vista Support Faq
http://www.jimmah.com/vista/

 




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 04:45 AM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.Search Engine Optimization by vBSEO 3.0.0 RC6
Copyright ©2004-2024 Vista Banter.
The comments are property of their posters.