获取我的文档路径的方法之一是读取注册表里的值:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Personal但是我用普通账户来登录系统,但是用管理员权限运行程序的话,读取上面的注册表值是管理员账号的我的文档路径,
而不是当前账号的我的文档路径。请问:有没有方法使用普通账户登录,然后用管理员权限运行程序,获取的是仍然是当前使用账户的我的文档路径呢?windowsvc我的文档路径

解决方案 »

  1.   

    TCHAR szPath[MAX_PATH];
    SHGetFolderPath(NULL, CSIDL_MYDOCUMENTS, NULL, SHGFP_TYPE_CURRENT, szPath);
      

  2.   

    TCHAR buf[256];
    GetEnvironmentVariable(L"UserProfile", buf, sizeof(buf)/ sizeof(TCHAR));
    CString strPath = buf;
    strPath += L"\\My Documents";
      

  3.   


    应该是:
    TCHAR szPath[MAX_PATH];
    SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, szPath);
    不过我试了,用右键用管理员权限运行,获取的是管理员账户的路径,不是当前登录用户的路径。
      

  4.   

    我觉得是程序的结构问题了,应该把数据放在公共的文件夹,这样就可以保证数据一致,而且避免各种账户问题了。
    获取公共文档的路径:
    TCHAR szPath[MAX_PATH];
    SHGetFolderPath(NULL, CSIDL_COMMON_DOCUMENTS, NULL, SHGFP_TYPE_CURRENT, szPath);但是我又发现貌似有两个地方可以存放?
    CSIDL_COMMON_DOCUMENTS  公共文档
    CSIDL_COMMON_APPDATA    程序数据这两个看名字一个是放文档,一个是放程序数据?不知哪个用起来更没有权限问题呢?