С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
llFreeManll
23 / 23 / 9
Регистрация: 27.11.2011
Сообщений: 272
Завершенные тесты: 1
1

Уникальный идентификатор PC

23.01.2016, 16:18. Просмотров 1016. Ответов 6
Метки нет (Все метки)

Добрых времени суток. Собственно нужно получить уникальный id компа средствами .NET 3.5, в котором нет
C#
1
2
using System.Management;
ManagementClass mc = new ManagementClass("win32_processor");
Можно ли это сделать как-то иначе?
P.S. Environment.MachineName не предлагать
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2016, 16:18
Ответы с готовыми решениями:

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

Сгенерировать уникальный ключ
Здравствуйте уважаемые программисты. Меня беспокоит следующий вопрос, как с...

Уникальный статический параметр процесса
День добрый, у меня есть 2 вопроса, задача: Моментально закрывать процесс...

Как получить уникальный код машины
Как получить уникальный код машины?

Идентификатор в С#
Можно ли в C# получить идентификатор события. И в принципе создать событие и...

6
skilllab
211 / 185 / 50
Регистрация: 03.02.2011
Сообщений: 1,781
Записей в блоге: 1
Завершенные тесты: 1
23.01.2016, 17:36 2
Цитата Сообщение от llFreeManll Посмотреть сообщение
сделать как-то иначе
Ага http://stackoverflow.com/questions/3216535/x86-x64-cpuid-in-c-sharp
0
insite2012
Модератор
Эксперт .NET
4865 / 3818 / 1096
Регистрация: 12.10.2013
Сообщений: 11,095
Записей в блоге: 2
23.01.2016, 17:37 3
Цитата Сообщение от llFreeManll Посмотреть сообщение
средствами .NET 3.5
Как это нет? А куда его дели? Мелкомягкие говорят что есть. Врут?
0
skilllab
211 / 185 / 50
Регистрация: 03.02.2011
Сообщений: 1,781
Записей в блоге: 1
Завершенные тесты: 1
23.01.2016, 17:38 4
Оно же:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
 private class ProcessorID
        {
            [DllImport("user32", EntryPoint = "CallWindowProcW", CharSet = CharSet.Unicode, SetLastError = true, ExactSpelling = true)]
            private static extern IntPtr CallWindowProcW([In] byte[] bytes, IntPtr hWnd, int msg, [In, Out] byte[] wParam, IntPtr lParam);
 
            [return: MarshalAs(UnmanagedType.Bool)]
            [DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)]
            public static extern bool VirtualProtect([In] byte[] bytes, IntPtr size, int newProtect, out int oldProtect);
 
            const int PAGE_EXECUTE_READWRITE = 0x40;
 
            public static string GetID()
            {
                byte[] sn = new byte[8];
 
                if (!ExecuteCode(ref sn))
                    return "ND";
 
                return string.Format("{0}{1}", BitConverter.ToUInt32(sn, 4).ToString("X8"), BitConverter.ToUInt32(sn, 0).ToString("X8"));
            }
 
            private static bool ExecuteCode(ref byte[] result)
            {
                int num;
 
                /* The opcodes below implement a C function with the signature:
                 * __stdcall CpuIdWindowProc(hWnd, Msg, wParam, lParam);
                 * with wParam interpreted as a pointer pointing to an 8 byte unsigned character buffer.
                 * */
 
                byte[] code_x86 = new byte[] {
                0x55,                      /* push ebp */
                0x89, 0xe5,                /* mov  ebp, esp */
                0x57,                      /* push edi */
                0x8b, 0x7d, 0x10,          /* mov  edi, [ebp+0x10] */
                0x6a, 0x01,                /* push 0x1 */
                0x58,                      /* pop  eax */
                0x53,                      /* push ebx */
                0x0f, 0xa2,                /* cpuid    */
                0x89, 0x07,                /* mov  [edi], eax */
                0x89, 0x57, 0x04,          /* mov  [edi+0x4], edx */
                0x5b,                      /* pop  ebx */
                0x5f,                      /* pop  edi */
                0x89, 0xec,                /* mov  esp, ebp */
                0x5d,                      /* pop  ebp */
                0xc2, 0x10, 0x00,          /* ret  0x10 */
            };
                byte[] code_x64 = new byte[] {
                0x53,                                     /* push rbx */
                0x48, 0xc7, 0xc0, 0x01, 0x00, 0x00, 0x00, /* mov rax, 0x1 */
                0x0f, 0xa2,                               /* cpuid */
                0x41, 0x89, 0x00,                         /* mov [r8], eax */
                0x41, 0x89, 0x50, 0x04,                   /* mov [r8+0x4], edx */
                0x5b,                                     /* pop rbx */
                0xc3,                                     /* ret */
            };
 
                byte[] code;
 
                if (IsX64Process())
                    code = code_x64;
                else
                    code = code_x86;
 
                IntPtr ptr = new IntPtr(code.Length);
 
                if (!VirtualProtect(code, ptr, PAGE_EXECUTE_READWRITE, out num))
                    Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error());
 
                ptr = new IntPtr(result.Length);
 
                return (CallWindowProcW(code, IntPtr.Zero, 0, result, ptr) != IntPtr.Zero);
            }
 
 
            private static bool IsX64Process()
            {
                return IntPtr.Size == 8;
            }
        }
0
llFreeManll
23 / 23 / 9
Регистрация: 27.11.2011
Сообщений: 272
Завершенные тесты: 1
23.01.2016, 17:46  [ТС] 5
Цитата Сообщение от insite2012 Посмотреть сообщение
Мелкомягкие говорят что есть. Врут?
Все, нашел. Студия добавила в проект system.management.dll не из того фраймворка Оо, добавил ручками и все заработало
0
insite2012
Модератор
Эксперт .NET
4865 / 3818 / 1096
Регистрация: 12.10.2013
Сообщений: 11,095
Записей в блоге: 2
23.01.2016, 17:52 6
Лучший ответ Сообщение было отмечено llFreeManll как решение

Решение

Цитата Сообщение от llFreeManll Посмотреть сообщение
у меня студия предлагает только создать новый класс...
У меня есть 2008 Студия, сейчас проверю.

Добавлено через 2 минуты
Все там есть. Ссылку не забыли добавить? Эти классы в отдельной dll, по умолчанию на нее ссылки нет. Ее надо вручную добавить.
1
llFreeManll
23 / 23 / 9
Регистрация: 27.11.2011
Сообщений: 272
Завершенные тесты: 1
23.01.2016, 17:54  [ТС] 7
Цитата Сообщение от insite2012 Посмотреть сообщение
Эти классы в отдельной dll
Так и есть, меня сбило то, что в студии уже по умолчанию есть ссылка на System.Management, которая к задаче никак не относится
0
23.01.2016, 17:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2016, 17:54

Уникальный идентификатор
Создал таблицу CREATE TABLE . ( UNIQUEIDENTIFIER DEFAULT (newid())...

Генерировать уникальный ID
Приветствую! Есть коды, сформированные по алгоритму GUID. Есть ли...

Уникальный логин
всем привет. столкнулся с проблемой как сделать проверку логина при регистрации...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru