Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Опереление расположения операционки, OS.location 
V
    Опции темы
Azzdorf
  Дата 21.11.2007, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 29.3.2007

Репутация: нет
Всего: нет



есть необходимость определить располежение операционной системы и права доступа (тойсь реально ли записывать в папку расположения операционки файл)

хотя по поводу второго есть идея пробывать туда файл записать отловить исключение (нульовое) и проверить записался ли файл (ато есть случаи когда Винда стоит виртуалкой повер юникса и оно дает скопировать только через 5 сек утирает лишнее файлы)

вообщем smile  но от концепций тож не откажусь
--------------------
Иногда шаг вперед - это результат хорошего пинка под зад.
PM MAIL   Вверх
Experimenter
Дата 21.11.2007, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: 8
Всего: 17



Здесь посмотри, я там код приводил для примера (для определения локации ОС тоже подойдет).


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
Azzdorf
  Дата 22.11.2007, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 29.3.2007

Репутация: нет
Всего: нет



Experimenter блин вроде получилось smile  еще правда не обтестил толком, но тема остается темой
можно ли упростить код и как проверить права на запись в папку установки операционки??? smile  smile 

Собственно код smile :

Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Management;
using System.Text;
using System.Windows.Forms;

namespace OS.location
{
    public class MyOS : Form
    {
        [method: STAThread]
        public static int Main(string[] args)
        {
            Application.Run(new MyOS());
            return 0;
        }

        public Button btn = new Button();
        public TextBox txtb = new TextBox();

        public MyOS()
        {
            this.CenterToScreen();
            this.Size = new Size(300,75);

            btn.Location = new Point(10,10);
            btn.Size = new Size(50, 25);
            btn.Text = "Get";
            btn.Click += new EventHandler(btn_Click);
            this.Controls.Add(btn);

            txtb.Location = new Point(70, 10);
            txtb.Size = new Size(200, 25);
            this.Controls.Add(txtb);
        }
        private void btn_Click(object sender, EventArgs e)
        {
            ManagementClass osClass = new ManagementClass("Win32_OperatingSystem");
            osClass.Options.UseAmendedQualifiers = true;

            
            PropertyDataCollection prop = osClass.Properties;
            ManagementObjectCollection oc = osClass.GetInstances();

            foreach (PropertyData pd in prop)
            {
                foreach (ManagementObject c in osClass.GetInstances())
                {
                    if (pd.Name == "WindowsDirectory")
                    {
                        txtb.Text = c.Properties["WindowsDirectory"].Value.ToString();
                    }
                }
            }
        }
    }
}
 smile 
--------------------
Иногда шаг вперед - это результат хорошего пинка под зад.
PM MAIL   Вверх
Experimenter
Дата 22.11.2007, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: 8
Всего: 17



Я делал так:
Код

        private void GetSystemData()
        {
            try
            {
                string dataFromClass = GetDataFromWmi("Win32_BIOS", new string[] { "SerialNumber", "ReleaseDate" });
            }
            catch (Exception ex)
            {
                _lastError = ex.Message;
            }
        }

        private string GetDataFromWmi(string className, string[] propertyNames)
        {
            string capturedData = "";
            ManagementClass osClass = new ManagementClass(className);
            osClass.Options.UseAmendedQualifiers = true;

            for (int i = 0; i < propertyNames.Length; i++)
                foreach (ManagementObject c in osClass.GetInstances())
                    capturedData += c.Properties[propertyNames[i]].Value + ";";
            return capturedData;
        }
хотя тоже не супер получается, хотя и нет перебора всех свойств, но слабое место в расчете на то, что заданные свойства должны быть в коллекции. У тебя еще переменная "ос" не задействована.
Насчет прав доступа вплотную не занимался, посмотри пространство имен System.Security.Permissions, класс FileIOPermission

Это сообщение отредактировал(а) Experimenter - 22.11.2007, 08:52


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.