Постоянные значения в непостоянных Windows VDI
Я ищу для определения значений в ОС Windows Desktop, которые сохраняются в непостоянных средах VDI, к которым можно получить программный доступ (IE PowerShell). Единственное известное мне значение (которое не подходит для моих требований) - это имя хоста DNS.
Сценарий...
Я создал приложение SaaS, которое лицензируется на машину в месяц.
Мой настольный агент генерирует уникальный идентификатор, используя постоянные системные значения, передает идентификатор в мой API, который проверяет, является ли идентификатор уникальным с нашей стороны, и имеется ли достаточное количество неизрасходованных кредитов в учетной записи клиента. Если оба эти условия выполняются, 28-дневный лицензионный ключ создается и отправляется обратно агенту в ответе API.
Эта настройка отлично подходит для традиционных настольных ПК, но я бы хотел использовать непостоянные среды VDI. В настоящее время. если в организации было 100 непостоянных рабочих столов, и рабочие столы перестраивались после сеанса пользователя каждый день, эта модель приводила бы к 2800 лицензиям, выдаваемым и взимаемым за каждые 28 дней, а не к 100... хорошо для моей прибыли, но не для долговечности клиента!
Вопрос...
Какие значения ОС, если таковые имеются, сохраняются между сеансами в непостоянном VDI Windows 10? Это просто имя хоста или есть конфигурации VDI, которые также могут привести к изменению имени хоста? (Я не знаю ничего о себе).
Спасибо!
0 ответов
Прошло время, но кто-то, ответивший год спустя, вернул меня:)
Я использую хешированную комбинацию из следующего:
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, я не совсем уверен, как выполнить эту конкретную задачу)