Назад | Перейти на главную страницу

Постоянные значения в непостоянном Windows VDI

Я хочу определить значения в ОС Windows Desktop, которые сохраняются в непостоянных средах VDI, к которым можно получить программный доступ (например, PowerShell). Единственное известное мне значение (которое не соответствует моим требованиям) - DNS Hostname.

Сценарий ...

Я создал приложение SaaS с лицензией на каждую машину в месяц.

Мой агент рабочего стола генерирует уникальный идентификатор, используя постоянные системные значения, отправляет идентификатор в мой API, который проверяет, является ли идентификатор уникальным с нашей стороны и что в учетной записи клиента достаточно неизрасходованных кредитов. Если оба этих условия верны, создается 28-дневный лицензионный ключ, который отправляется обратно агенту в ответе API.

Эта настройка идеально подходит для традиционных постоянных рабочих столов, однако я хотел бы обслуживать непостоянные среды VDI. В настоящее время. если бы в организации было 100 непостоянных рабочих столов и рабочие столы перестраивались после пользовательского сеанса каждый день, эта модель привела бы к выдаче 2800 лицензий и оплате за каждые 28 дней, а не за 100 ... хорошо для моей прибыли, но не для долговечности клиентов!

Вопрос...

Какие значения ОС, если таковые имеются, сохраняются между сеансами в непостоянном VDI Windows 10? Это просто имя хоста или есть конфигурации VDI, которые также могут привести к изменению имени хоста? (Я ничего не знаю).

Спасибо!

Прошло время, но кто-то, ответивший год спустя, вернул меня :)

Я использую хешированную комбинацию из следующего:

  • MachineGuid ценность в SOFTWARE\Microsoft\Cryptography ключ
  • UUID из (Get-CimInstance Win32_ComputerSystemProduct).UUID
  • Дополнительная энтропия, собранная из закрытого частного API

Каждый раз, когда отображается новый идентификатор устройства, мой API запускает набор значений об аппаратном обеспечении и программном обеспечении (около 20) с помощью функции достоверности. Если 15 из этих значений совпадают, применяется существующая лицензия, в противном случае назначается новая лицензия.

Теперь извините, если я не на 100% понимаю, где и как подключается ваш API, но:

Вы можете получить хорошее представление об уникальных идентификаторах, если перейдете со стороны контроллера доставки. С необходимым SDK PowerShell может предоставить вам довольно много информации через get-brokermachine (я бы добавил несколько необходимых фильтров, например, -DesktopGroupName "YourDeliveryGroupName", просто проверьте документацию Вот.

Если вы говорите о самом рабочем столе, вы можете теоретически получить MAC-адрес, потому что (я бы сказал, независимо от вашего типа хоста) он всегда уникален, и у вас есть возможность получить значение через PowerShell, если у вас есть необходимые SDK добавлен.

Кроме этого, я боюсь (и я только что проверил на своем непостоянном VirtualDesktop VDI), что нет других действительно уникальных идентификаторов, кроме вашего DNS.

Итак, если вы действительно хотите избежать DNS, а также MAC, вы можете теоретически получить уникальный SID (или действительно любое другое уникальное значение, которое Citrix DC дает вам несколько), отправить его на соответствующее устройство и перейти оттуда. Я думаю о каждой машине-брокере | ...

(хотя мне нравится PoSH, я не совсем уверен, как выполнить эту конкретную задачу)