В настоящее время я устанавливаю свое программное обеспечение под учетной записью администратора, в конце процесса мне нужно добавить ярлык запуска для UserX, однако этот UserX еще не вошел в систему и, следовательно, для них нет профиля в разделе \USERS \ ( или эквивалентная папка в зависимости от версии Windows).

Есть ли какие-либо предложения или решения для этого? Сегодня я должен разместить его под AllUsers, но это имеет отрицательный побочный эффект запуска приложения при входе в учетную запись ADMIN (что совершенно неправильно).

В настоящее время мне нужно поддерживать Windows XP, 7 и 10.

Сегодня я использую VBScript с WMI для перебора списков профилей (в разделе HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList), чтобы найти моего пользователя (которого еще нет) и использую objWshShell.CreateShortcut с правильными путями - отлично работает, если профиль пользователя существует и для AllUsers, но я не могу найти решение для случая, когда пользователь никогда не входил в систему (например, пользователь DOMAIN - что является моей главной заботой).

Любые идеи очень приветствуются. Спасибо,

3 ответа3

1

Невозможно добавить ярлык для несуществующего пользователя, поэтому нужно запускать его при каждом запуске и определять, выполнялся ли скрипт раньше или нет.

Вы можете сделать это, поместив значение в реестр или поместив файл в каталог своего профиля (лучший вариант) и проверив его наличие.

Если по какой-либо причине вам нужно перезапустить скрипт для всех, вы просто удалите значение из реестра или из каталога их профиля.

Это работает из-за следующей техники.

Когда пользователь входит в систему в первый раз, самое первое, что делается, - это: папка профиля создается локально, существующая синхронизируется с сервером.

Это необходимо, потому что установки и т.д., Которые происходят во время входа в систему, должны быть там, и другие параметры, такие как групповые политики, также хранятся там.

Сценарий входа в систему выполняется в конце входа в систему, и в этот момент каталог профиля существует.

Теперь, учитывая, что это первый раз, когда он запускается, можно проверить файл: % APPDATA%\instal.dat, чтобы увидеть, выполнялся ли скрипт раньше или нет. При первом входе в систему этот файл отсутствует, поэтому сценарий продолжает выполнять свои функции и выполнять установку. В самом конце мы создаем файл % APPDATA%\instal.dat, и скрипт завершается нормально.

При следующем входе в систему все файлы уже существуют, поэтому во время входа выполняется синхронизация с сервером. Он будет обновлять любые изменения, но файл instal.dat также будет синхронизирован, поэтому сценарий входа в систему теперь найдет файл и сможет прервать выполнение сценария вместо выполнения другой установки.

И, конечно же, помимо проверки, установлен ли он для пользователя с помощью файла instal.dat, вы также можете проверить, установлен ли он локально (есть ли файлы в "Program Files"?

Это позволит убедиться, что когда пользователь входит в систему на новом компьютере, но с существующим профилем, используя Roaming Profile, и установка происходит в его профиле, ничего не происходит, кроме случаев, когда необходимая локально программа не установлена.

0

Если у вас есть Active Directory и чистая настройка, вы можете назначить сценарии запуска организационным единицам. Если у вас OU обычного пользователя, вы можете следовать этим инструкциям, чтобы назначить сценарий запуска этой группе.

0
  1. Если вы знаете SID пользователя и, если существует \HKEY_USERS\SID , перейдите в
    \HKEY_USERS\SID\Software\Microsoft\Windows\CurrentVersion
    и положить что-нибудь в Run или RunOnce .
  2. Положить пакетный файл, который выглядит как
    если% username% == <the_user's_name> (запустите программу )
    в папку запуска AllUsers.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .