В Windows Vista и 7 я не могу получить доступ к системной переменной% DEFAULTUSERPROFILE% - она ​​отображается как не найденная - PullRequest
2 голосов
/ 25 мая 2010

Если я пытаюсь получить доступ к этой системной переменной из диалогового окна «Выполнить ...», Windows сообщает, что каталог не существует. Некоторые системные переменные, такие как% SYSTEMROOT% и% USERPROFILE%, работают. Следовательно, если я попытаюсь использовать предположительно несуществующую переменную, такую ​​как% DEFAULTUSERPROFILE% или% PROFILESFOLDER% в C #, я ничего не получу взамен. Что мне нужно сделать, чтобы получить доступ к этим переменным?

Ответы [ 5 ]

2 голосов
/ 25 мая 2010

Мне нужно указать на C: \ Users \ Default \ AppData

.

Ты уверен? Помните, что эта папка используется для заполнения начального каталога AppData для каждого нового пользователя, добавленного в систему.

Если вам нужен фактический каталог данных общего приложения в .NET, это:

String commonAppData = Environment.GetFolderPath(Environment.SpecialFolders.CommonApplicationData)
2 голосов
/ 25 мая 2010

Вы пробовали %ALLUSERSPROFILE%?

1 голос
/ 25 мая 2010

Я предлагаю извлечь это значение непосредственно из реестра - на случай, если вы не сможете его расширить:

public static string GetDefaultUserProfilePath() {
    string path = System.Environment.GetEnvironmentVariable("DEFAULTUSERPROFILE") ?? string.Empty;
    if (path.Length == 0) {
        using (Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList")) {
            path = (string)key.GetValue("Default", string.Empty);
        }
    }
    return path;
}
0 голосов
/ 26 мая 2010

Вызов SHGetFolderLocation с CSIDL_PROFILE и -1 в качестве параметра токена

0 голосов
/ 25 мая 2010

Вы упомянули C # - вы не можете использовать переменные окружения в строках пути C #, вам нужно заменить их, используя System.Environment .

System.Environment.GetEnvironmentalVariable("USERPROFILE");

Я раньше не видел %DefaultUserProfile% - должен ли он указывать на первое имя пользователя, которое было установлено?

...