Как я могу узнать, использует ли пользователь ноутбук - PullRequest
9 голосов
/ 14 мая 2010

Мне нужно, чтобы приложение .Net Winform обнаруживало, открыто ли мое приложение на ноутбуке или рабочей станции.

Я смотрел на Environment и SystemInformation, но безрезультатно. WMI сделает трюк?

Спасибо за руководство ....


По запросу у меня есть приложение, которое использует репликацию слиянием, чтобы наши пользователи могли работать в домах членов. Некоторые из тех, кто использует эту программу, никогда не выходят на поле и поэтому имеют только башни. Это приложение только для работы, поэтому наши системы несколько контролируются. Например, на настольных компьютерах нет ИБП и нет ЦП для ноутбуков.

Я настроил свой DAL для возможности переключения на основе настройки между локальным SQL и центральным SQL Server. Я хотел бы иметь возможность установить это автоматически на основе там системы.

Если ноутбук, то они должны указывать локально, если башня, в центре.

Это помогает? Я сознательно оставил это прежде, чтобы не загромождать ответы. Мои извинения за извинения за достижение противоположного.

Ответы [ 6 ]

13 голосов
/ 14 мая 2010

Это действительно сложная проблема из-за сопутствующих случаев. Я не знаю, насколько точной должна быть ваша заявка, но вот надежный способ узнать, находится ли пользователь на стереотипном ноутбуке.

Win32_Battery

Возможно, вы захотите взглянуть на EstimatedRunTime.

EstimatedRunTime

Data type: uint32
Access type: Read-only

Estimate in minutes of the time to battery charge depletion under the

текущее состояние нагрузки, если утилита питание отключено или потеряно и остается выключенным, или ноутбук отключен от источник питания. Это свойство наследуется от CIM_Battery.

Вы также можете проверить:

Win32_PortableBattery

Кроме того, вот интересное обсуждение аналогичной проблемы и работы с UPS.

http://forum.bigfix.com/viewtopic.php?pid=19908

В частности:

"Microsoft ACPI-Compliant Control Method Battery"

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

4 голосов
/ 14 мая 2010

http://msdn.microsoft.com/en-us/library/Aa394474

, тогда посмотрите на

ChassisTypes

Value Meaning
1 Other
2 Unknown
3 Desktop
4 Low Profile Desktop
5 Pizza Box
6 Mini Tower
7 Tower
8 Portable
9 Laptop
10 Notebook
11 Hand Held
12 Docking Station
13 All in One
14 Sub Notebook
15 Space-Saving
16 Lunch Box
17 Main System Chassis
18 Expansion Chassis
19 SubChassis
20 Bus Expansion Chassis
21 Peripheral Chassis
22 Storage Chassis
3 голосов
/ 14 мая 2010

Получить тип процессора с помощью ( см. Этот вопрос ):

System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE")

Если вы можете определить, что это мобильный процессор, у вас есть ответ.

(Стоит отметить, что WMI предоставит вам лучшую информацию, как объяснено в вопросе, который я связал.)

1 голос
/ 12 апреля 2012

Я успешно протестировал следующий пакетный файл, но только на нескольких компьютерах:

@echo off
reg query "HKLM\SYSTEM\CurrentControlSet\Enum\ACPI" /s | find "DeviceDesc" | find "ACPI Lid" > nul
if errorlevel 1 (
    echo This computer IS NOT a laptop ^(no ^"ACPI Lid^" device found in Registry^)
) else (
    echo This computer IS a laptop ^(^"ACPI Lid^" device found in Registry^)
)
echo. & pause
1 голос
/ 15 мая 2010

На основании вашей обновленной информации у меня есть пара рекомендаций.

  1. Сделать это настраиваемой опцией. Либо во время установки, либо при первом запуске спросите их, что они из себя представляют. Это будет намного точнее, чем угадывать.

  2. Если у вас уже есть репликация слиянием ... Почему бы не считать всех отключенными / удаленными пользователями?

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

Может быть, вы можете запросить информацию о батарее?

Взгляните на это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...