Текст минимальной программы на C# test.cs:
class test {
static void Main(){
}
}
Программа скомпилировалась через csc в экзешник test.exe размером 3 584 байт
Текст минимальной программы на C# test.cs:
class test {
static void Main(){
}
}
Программа скомпилировалась через csc в экзешник test.exe размером 3 584 байт
Относительно простая программа для вывода в коммандной строке списка локальных учётных записей пользователей на компьютере. Программа закончена и готова к компиляции.
using System;
using System.DirectoryServices;
using System.Linq;
namespace HelloWorld
{
class Hello
{
static void Main()
{
Console.WriteLine("Список локальных пользователей:");
//Black magic using linq
var path = string.Format("WinNT://{0},computer", Environment.MachineName);
using (var computerEntry = new DirectoryEntry(path))
{
var userNames = from DirectoryEntry childEntry in computerEntry.Children
where childEntry.SchemaClassName == "User"
select childEntry.Name;
foreach (var name in userNames)
Console.WriteLine(name);
}
Console.WriteLine("Нажми любую кнопку.");
Console.ReadKey();
}
}
}
Как собрать программу, чтобы она заработала:
1. Если в системе не установлен .net framework, то скачиваем его с сайта микрософта и устанавливаем
2. Вставляем текст программы в бллокнот и сохраняем в файл program.cs (.cs — исходник программы на языке C#)
3. Открываем командную строку и компилируем нашу программу с помощью компилятора csc.exe примерно так:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe c:\test\program.cs
4. В результате если не было ошибок, то получим файл program.exe — это и есть наша откомпилированная программа на C#.
Теперь можно потихоньку разбираться с исходниками и пытаться поправить программу под себя. Смысл статьи — просто показать, на сколько оказывается легко программировать в винде.
srvtestadmin@SRV-test:~$ sudo apt-get install ocsinventory-agent [sudo] password for srvtestadmin: Чтение списков пакетов… Готово Построение дерева зависимостей Чтение информации о состоянии… Готово Будут установлены следующие дополнительные пакеты: intltool-debian libproc-daemon-perl po-debconf Предлагаемые пакеты: smartmontools read-edid libmail-box-perl Рекомендуемые пакеты: dmidecode hdparm libmail-sendmail-perl НОВЫЕ пакеты, которые будут установлены: intltool-debian libproc-daemon-perl ocsinventory-agent po-debconf обновлено 0, установлено 4 новых пакетов, для удаления отмечено 0 пакетов, и 38 пакетов не обновлено. Необходимо скачать 0 B/413 kB архивов. После данной операции, объём занятого дискового пространства возрастёт на 2 076 kB. Хотите продолжить [Д/н]? y Предварительная настройка пакетов ... Selecting previously unselected package intltool-debian. (Чтение базы данных ... на данный момент установлено 120432 файла и каталога.) Распаковывается пакет intltool-debian (из файла .../intltool-debian_0.35.0+20060710.1_all.deb)... Selecting previously unselected package libproc-daemon-perl. Распаковывается пакет libproc-daemon-perl (из файла .../libproc-daemon-perl_0.14-1_all.deb)... Selecting previously unselected package po-debconf. Распаковывается пакет po-debconf (из файла .../po-debconf_1.0.16+nmu2ubuntu1_all.deb)... Selecting previously unselected package ocsinventory-agent. Распаковывается пакет ocsinventory-agent (из файла .../ocsinventory-agent_2%3a2.0-1_all.deb)... Настраивается пакет intltool-debian (0.35.0+20060710.1) ... Настраивается пакет libproc-daemon-perl (0.14-1) ... Настраивается пакет po-debconf (1.0.16+nmu2ubuntu1) ... Настраивается пакет ocsinventory-agent (2:2.0-1) ... Creating config file /etc/ocsinventory/ocsinventory-agent.cfg with new version srvtestadmin@SRV-test:~$ ocsinventory-agent --local ~/srv-test_2013-08-08.ocs Config: Failed to open /etc/ocsinventory/ocsinventory-agent.cfg [info] You should run this program as super-user. [error] Failed to create /var/lib/ocsinventory-agent/http:__ocsinventory-ng_ocsinventory directory: Permission denied [info] [download] Agent is running in local mode...disabling module Can't open `/home/srvtestadmin/srv-test_2013-08-08.ocs/SRV-test-2013-08-08-16-14-40.ocs': No such file or directory at /usr/share/perl5/Ocsinventory/Agent/XML/Inventory.pm line 160. srvtestadmin@SRV-test:~$ sudo ocsinventory-agent --local ~/srv-test_2013-08-08.ocs [info] Accountinfo file doesn't exist. I create an empty one. [info] [download] Agent is running in local mode...disabling module Can't open `/home/srvtestadmin/srv-test_2013-08-08.ocs/SRV-test-2013-08-08-16-14-54.ocs': No such file or directory at /usr/share/perl5/Ocsinventory/Agent/XML/Inventory.pm line 160. srvtestadmin@SRV-test:~$ sudo ocsinventory-agent --local ~/ [info] [download] Agent is running in local mode...disabling module [info] Inventory saved in /home/srvtestadmin/SRV-test-2013-08-08-16-14-54.ocs srvtestadmin@SRV-test:~$
QFilef(qApp->applicationDirPath()+QDir::separator()+"file.txt");
QDird(QString(getenv("USERPROFILE"))+"\\AppData\\Roaming\\Microsoft\\Windows\\SendTo");
QProcess().startDetached("explorerftp://server");
Пользователь создаётся коммандой
net user vasya 54321 /add
54321 — пароль нового пользователя. Не забываем, что для создания пользователей должно быть достаточно прав. Пользователь станет членом локальной группы «Пользователи». Если нам нужен не пользователь, а администратор, то выполняем ещё 2 команды:
net localgroup администраторы vasya /add net localgroup пользователи vasya /delete
Ну и для механизации добавления администраторов получается примерно вот такой .bat файл:
net user %1% %2% /add net localgroup администраторы %1% /add net localgroup пользователи %1% /delete
Помним, что .bat файл нужно сохранять в кодировке cp866, так как названия групп на русском (например Notepad++ умеет). Теперь создать пользователя можно выполнив следующую команду:
> newadmin.bat vasya 54321
Будем управлять кубиком на 3D-виде через переменную Cube
>>> cube = bpy.data.objects["Cube"]
Показать или спрятать имя объекта на виде
>>> cube.show_name = 1 >>> cube.show_name = 0
Показать или спрятать сам кубик
>>> cube.hide = 1 >>> cube.hide = 0
Показать на виде имя объекта
>>> cube.show_name = 1
Изменить абсолютное положение объекта в пространстве по оси X
>>> cube.location.x = 1 >>> cube.location.x = 2 >>> cube.location.x = 0
Ещё кое-что
#добавить кубик
bpy.ops.mesh.primitive_cube_add(radius=1, view_align=False, enter_editmode=False, location=(0, 0, 0), rotation=(0, 0, 0), layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False))
#добавить текстовый обьект
bpy.ops.object.text_add(view_align=False, enter_editmode=False, location=(1.53493, -4.79475, 1.36985), rotation=(0, 0, 0), layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False))
#обьявление переменной — ссылки на текущий активный обьект
o = bpy.context.scene.objects.active
На примере одной из таблиц GLPI
SELECT name FROM ( SELECT * FROM glpi_computers ORDER BY name ) AS `d`
QString path = "c:\\setup.log"; QDesktopServices::openUrl(QUrl::fromLocalFile(path)); Откроется в блокноте указанный файл