2010-06-04 2 views
0

После вызова RegConnectRegistry (...), чтобы открыть реестр на удаленной машине, невозможно ли расширить переменные среды? Я посмотрел на ExpandEnvironmentStrings и ExpandEnvironmentStringsForUser, но это только кажется полезным на локальном компьютере. Я думаю, что это должно быть возможно, учитывая, что RegistryKey.GetValue() в .Net расширяет переменные после вызова RegistryKey.OpenRemoteBaseKey(), но мне нужно сделать это за пределами .Net.Развернуть переменную строку реестра на удаленной машине

Любые идеи?

+1

Документация для RegistryKey.GetValue() (http://msdn.microsoft.com/en-us/library/fdf576x1.aspx) указывает, что она расширяет строки среды, используя данные из * локальной * среды. – Luke

+0

Да, я знаю, что метод .Net расширяется, как я уже говорил выше. Существует новый метод, который также расширяется, но он доступен только для Vista и выше - http://msdn.microsoft.com/en-us/library/ms724868(v=VS.85).aspx. –

+0

Я должен прочитать комментарий Люка ближе и прочитать документацию msdn ближе, чтобы увидеть, что он расширяется в зависимости от локальной среды. –

ответ

2

Учитывая, что переменные окружения, запущенные в данном процессе, основаны на текущем пользователе, как вы определяете набор переменных среды, которые будут активны на удаленной машине?

Даже если вы могли бы прочитать эту информацию (это все-таки в реестре), что бы вы сделали с процессами, которые меняют окружающую среду?

+0

Мне нужно развернуть значения ключа реестра под локальной машиной в EventLog для получения путей к ресурсам ресурса сообщений. –

+0

Учитывая, что функция .Net, которая делает то, что вы хотите, расширяет строки среды, используя текущие переменные среды, не могли бы вы просто вызвать ExpandEnvironmentStrings в строке? –

+0

Да, ты прав. Увидев теперь, что .Net-функция только расширяется в зависимости от текущей среды, которая была бы способ пойти. –

Смежные вопросы