Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162

Открыть новую тему     Написать ответ в эту тему

dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SerBUser
1.Попробуй менять время для локально расположенного файла. Если меняет, значит дело в нттр.
2. Скачай пример и попробуй менять время для локально расположенного файла. Если меняет,  попробуй подставить свой нттр адрес.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 17:13 15-04-2010
SerBUser

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp
В строке System.IO.File.SetCreationTime(fileNames, crdatetime) fileNames - это путь на локальном диске пользователя, т.е. я вложения с портала сохраняю на диск.

Всего записей: 123 | Зарегистр. 31-08-2009 | Отправлено: 02:16 16-04-2010
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SerBUser
Я просто подставил значения и все работает
System.IO.File.SetCreationTime("c:\123.txt", "01/01/1990")
Проверяй чему равны переменные fileNames, crdatetime перед исполнением.
Если в crdatetime лежит нормальная date в формате xx/xx/xxxx попробуй подставить все же crdatetime.tostring  
Или может формат сo временем не нравиться. Тогда отформатируй в xx/xx/xxxx перед присвоением.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 02:51 16-04-2010 | Исправлено: dneprcomp, 02:52 16-04-2010
SerBUser

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp
Огромное спасибо за помощь! Все получилось.

Всего записей: 123 | Зарегистр. 31-08-2009 | Отправлено: 09:47 16-04-2010
v1rtyaluk



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
что нужно писать обработчик событий button1_Click для вызова перезагрузки компьютера???

Всего записей: 110 | Зарегистр. 10-03-2010 | Отправлено: 23:43 18-04-2010
Omicron_Persey_8



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
v1rtyaluk
Проще всего вот так

Код:
Process.Start("shutdown.exe", @"/r /t 0");

где /r - перезагрузка, /s - выключение, /t 0 - время в секудах.
Но лучше и правильней - здесь

Всего записей: 282 | Зарегистр. 02-09-2007 | Отправлено: 08:58 19-04-2010
mrherbrooks



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
v1rtyaluk
в соответствие с этим
внимательно читать про привилегии.
пример реализации не сложно найти на С++.

Всего записей: 129 | Зарегистр. 23-08-2008 | Отправлено: 08:59 19-04-2010
ruslrusl



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
v1rtyaluk
 
писал не сам, а нашел
 

Код:
 
using System.Runtime.InteropServices;
 
    class reboot
    {
        //импортируем API функцию InitiateSystemShutdown
        [DllImport("advapi32.dll", EntryPoint = "InitiateSystemShutdownEx")]
        static extern int InitiateSystemShutdown(string lpMachineName, string lpMessage, int dwTimeout, bool bForceAppsClosed, bool bRebootAfterShutdown);
        //импортируем API функцию AdjustTokenPrivileges
        [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
        internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall,
        ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen);
        //импортируем API функцию GetCurrentProcess
        [DllImport("kernel32.dll", ExactSpelling = true)]
        internal static extern IntPtr GetCurrentProcess();
        //импортируем API функцию OpenProcessToken
        [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
        internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);
        //импортируем API функцию LookupPrivilegeValue
        [DllImport("advapi32.dll", SetLastError = true)]
        internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid);
        //импортируем API функцию LockWorkStation
        [DllImport("user32.dll", EntryPoint = "LockWorkStation")]
        static extern bool LockWorkStation();
        //объявляем структуру TokPriv1Luid для работы с привилегиями
        [StructLayout(LayoutKind.Sequential, Pack = 1)]
        internal struct TokPriv1Luid
        {
            public int Count;
            public long Luid;
            public int Attr;
        }
        //объявляем необходимые, для API функций, константые значения, согласно MSDN
        internal const int SE_PRIVILEGE_ENABLED = 0x00000002;
        internal const int TOKEN_QUERY = 0x00000008;
        internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;
        internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
        //функция SetPriv для повышения привилегий процесса
        private void SetPriv()
        {
            TokPriv1Luid tkp; //экземпляр структуры TokPriv1Luid  
            IntPtr htok = IntPtr.Zero;
            //открываем "интерфейс" доступа для своего процесса
            if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok))
            {
                //заполняем поля структуры
                tkp.Count = 1;
                tkp.Attr = SE_PRIVILEGE_ENABLED;
                tkp.Luid = 0;
                //получаем системный идентификатор необходимой нам привилегии
                LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref tkp.Luid);
                //повышем привилигеию своему процессу
                AdjustTokenPrivileges(htok, false, ref tkp, 0, IntPtr.Zero, IntPtr.Zero);
            }
        }
        //публичный метод для перезагрузки/выключения машины
        public int halt(bool RSh, bool Force)
        {
            SetPriv(); //получаем привилегия
            //вызываем функцию InitiateSystemShutdown, передавая ей необходимые параметры
            return InitiateSystemShutdown(null, null, 0, Force, RSh);            
        }
        //публичный метод для блокировки операционной системы
        public int Lock()
        {
            if (LockWorkStation())
                return 1;
            else
                return 0;
        }
 

 
 
 
 

Код:
Собственно класс имеет два метода:
Lock() - вызов этого метода приведет к блокированию ос (но не выходу из системы!)
halt(bool RSh, bool Force) - вызов этого метода приводит к перезагрузке/выключению, вот возможные режимы:
 
halt(true, false) //мягкая перезагрузка
halt(true, true) //жесткая перезагрузка
halt(false, false) //мягкое выключение
halt(false, true) //жесткое выключение
 

 
Добавлено:
Есть кто создает сайты на C#??
 
Киньте плиз ссылку на книжки для начинающего!!! Чтоб все было описано пошагаво..

Всего записей: 305 | Зарегистр. 14-10-2009 | Отправлено: 09:02 19-04-2010
vlary



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблема такая. Делаю на C# и ASP.Net некоторое Web Application. Написан модуль, который перехватывает запросы к Web серверу и что-то с ними делает. Если создаю виртуальный сайт и указываю папку где Application в качестве директории, все работает. Если делаю просто виртуальную директорию, указывая ту же папку, то работать перестает. Страница просто тупо загружается, перехват не работает.
В чем может быть проблема?

Всего записей: 17279 | Зарегистр. 13-06-2007 | Отправлено: 01:15 20-04-2010
BlackVetal



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ruslrusl
Про книги нужно спрашивать в соответствующей ветке - английские книги и русские книги  


----------
Регистрация ника))
ОСАГО и КАСКО
Работа

Всего записей: 1094 | Зарегистр. 13-11-2005 | Отправлено: 06:20 20-04-2010
May_Johnson



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Услышал сегодня тут http://www.gotdotnet.ru/blogs/jeje/7651/ а потом прочитал тут http://nesteruk.wordpress.com/2010/04/15/st-petersburg-vs2010launch/ очень интересные вещи про портативную версию новой VS, но конкретных сведений не давали, может кто знает больше?

Всего записей: 47 | Зарегистр. 10-02-2008 | Отправлено: 14:23 21-04-2010 | Исправлено: May_Johnson, 12:55 22-04-2010
v1rtyaluk



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Omicron_Persey_8
mrherbrooks
ruslrusl
спасибо за помощь, воспользовался третьим вариантом.
 
помогите мне решить очередную проблему, она меня уже достала!!!
нужно применить к файлу timedate.cpl патч графических ресурсов (ResPatch)
(но вообще-то таких патчеров одновременно нужно применять не менее десятка)
так вот запустить патчер нужно с ключами командной строки:
 
Patch_timedate.exe -force -guiless -auto -quiet -nobackup
 
и все это осуществить на C#
пробовал
 
foreach (string resp in Directory.GetFiles("C:\\iStyle\\Res2Patch\\system32", "*.exe"))
            {
                string FileName = resp;
                string Arguments = @"-force -guiless -auto -quiet -nobackup";
                ProcessStartInfo StartInfo = new ProcessStartInfo(FileName, Arguments);
                StartInfo.CreateNoWindow = true;
                StartInfo.UseShellExecute = false;
                rp.StartInfo = StartInfo;
                rp.Start();
                rp.WaitForExit();
            }
и
 
foreach (string patch in Directory.GetFiles("C:\\iStyle\\Res2Patch\\system32", "*.cmd"))
            {
                string FileName = patch;
                string a1 = @" -force";
                string a2 = @" -guiless";
                string a3 = @" -auto";
                string a4 = @" -quiet";
                string a5 = @" -nobackup";
                string Arguments = a1 + a2 + a3 + a4 + a5;
                System.Diagnostics.Process.Start(FileName, Arguments);
                Console.WriteLine(patch);
            }
и это тоже
 
            System.Diagnostics.Process.Start("C:\\iStyle\\Res2Patch\\system32\\Patch_timedate.exe", "-force -guiless -auto -quiet -nobackup");
 
и нихера не работает!!!!!
я уже не знаю, что делать.
 
если кто знает, умеет помогите, пожалуйста!!!
по ссылке ниже в архиве 2 файла (patch_timedate.exe и timedate.cpl) для наводки.
депозитфайлс.ком/ru/files/it7a44ji3
Помогите, пожалуйста, буду очень благодарен

Всего записей: 110 | Зарегистр. 10-03-2010 | Отправлено: 14:40 22-04-2010 | Исправлено: v1rtyaluk, 14:43 22-04-2010
Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
v1rtyaluk

Код:
 
...
ProcessStartInfo startInfo = new ProcessStartInfo("ping.exe");
startInfo.Arguments = "www.ya.ru -t";
Process.Start(startInfo);
...
 

Process.Start
 

Код:
...
ProcessStartInfo startInfo = new ProcessStartInfo("Patch_timedate.exe","-force -guiless -auto -quiet -nobackup");
Process.Start(startInfo);
...

т.е. код рабочий, timedate.cpl был 683.5 кб, после запуска  стал 758.5 кб.
Какую ошибку хоть выдает?

Всего записей: 537 | Зарегистр. 05-07-2007 | Отправлено: 20:06 22-04-2010 | Исправлено: Lihonosov, 20:22 22-04-2010
v1rtyaluk



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Lihonosov
 
вот код

Код:
 
            foreach (string resp in Directory.GetFiles("C:\\iStyle\\Res2Patch\\system32", "*.exe"))
            {
                string FileName = resp;
                string Arguments = @"-force -guiless -auto -quiet -nobackup";
                ProcessStartInfo StartInfo = new ProcessStartInfo(FileName, Arguments);
                StartInfo.CreateNoWindow = true;
                StartInfo.UseShellExecute = false;
                rp.StartInfo = StartInfo;
                tw.WriteLine("::Обработка патчера " + resp);
                rp.Start();
                rp.WaitForExit();
            }
 

и не работает ((((;
 
скинь, пожалуйста, архив с проектом тот, что ты кажешь смог пропатчить библиотеку

Всего записей: 110 | Зарегистр. 10-03-2010 | Отправлено: 21:58 22-04-2010
Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
v1rtyaluk

Цитата:
скинь, пожалуйста, архив с проектом тот, что ты кажешь смог пропатчить библиотеку

нечего скидывать, выше я написал весь код который использовал

Цитата:
вот код  
 
Код:  
            foreach (string resp in Directory.GetFiles("C:\\iStyle\\Res2Patch\\system32", "*.exe"))  
            {  
                string FileName = resp;  
                string Arguments = @"-force -guiless -auto -quiet -nobackup";  
                ProcessStartInfo StartInfo = new ProcessStartInfo(FileName, Arguments);  
                StartInfo.CreateNoWindow = true;  
                StartInfo.UseShellExecute = false;  
                rp.StartInfo = StartInfo;  
                tw.WriteLine("::Обработка патчера " + resp);  
                rp.Start();  
                rp.WaitForExit();  
            }  
 
 
 
и не работает ((((;

"каша" какая-то в этом коде
 
по идее у тебя должно быть что-то вроде такого:
 

Код:
Process rp = new Process();
 
foreach (string resp in Directory.GetFiles("C:\\iStyle\\Res2Patch\\system32", "*.exe"))  
{
        rp.StartInfo.FileName = resp;
        rp.StartInfo.Arguments = "-force -guiless -auto -quiet -nobackup";
        rp.StartInfo.CreateNoWindow = true;
        rp.StartInfo.UseShellExecute = false;
        rp.StartInfo.RedirectStandardOutput = true;
        rp.Start();
        Console.WriteLine(rp.StandardOutput.ReadToEnd());
        rp.WaitForExit();
}


Всего записей: 537 | Зарегистр. 05-07-2007 | Отправлено: 02:08 23-04-2010
v1rtyaluk



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Lihonosov
не работает ни мой, ни ваш.
походу в вашем коде тоже не "суп"
 
http://bit.ly/9ySzHe
по ссылке файлы проекта, посмотрите сами.
 
Добавлено:
Lihonosov
спасибо за помощь, уже сам разобрался.
 
вот мой вариант кода

Код:
 
            foreach (string resp in Directory.GetFiles("C:\\iStyle\\Res2Patch\\system32", "*.exe"))
            {
                rp.StartInfo.WorkingDirectory = @"C:\\iStyle\\Res2Patch\\system32";
                rp.StartInfo.FileName = resp;
                rp.StartInfo.Arguments = " -force -guiless -auto -quiet -nobackup";
                rp.Start();
            }
 

Всего записей: 110 | Зарегистр. 10-03-2010 | Отправлено: 17:15 23-04-2010
Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
v1rtyaluk
все дело было в:

Цитата:
rp.StartInfo.WorkingDirectory = @"C:\\iStyle\\Res2Patch\\system32";


Всего записей: 537 | Зарегистр. 05-07-2007 | Отправлено: 21:48 23-04-2010
SerBUser

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Радость моя была преждевременна. Напомню задачу - в SharePoint выгрузить все вложения списка на локальный диск.
Вот код:

Код:
 
SPWeb site = SPContext.Current.Web;
SPUser currentUser = SPContext.Current.Web.CurrentUser;
string userName = currentUser.Name.ToUpper();
string userLogin = currentUser.LoginName.ToUpper();
string nameDir = SPContext.Current.List.Title.ToString();
SPList oList = site.Lists[nameDir];
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo("c:\\" + nameDir);
if (!di.Exists)
  di.Create();
int k = oList.Items.Count;
for (int i = 0; i < k; i++)
  {
   SPListItem item = oList.Items[i];
   SPAttachmentCollection oattaches = item.Attachments;
   System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(nameDir + item.Title.ToString());
   if (!dir.Exists)
    dir.Create();
   lblStatus.Text = lblStatus.Text + "6. ";
   for (int l = 0; l < oattaches.Count; l++)
     {
      string fileName = oattaches[l];
      string fileURL = oattaches.UrlPrefix + fileName;
      SPFile filea = site.GetFile(fileURL);
      DateTime crdatetime = filea.TimeCreated;
      string fileNames = nameDir + item.Title.ToString() + "\\" + fileName + " ";
      System.IO.FileStream fs = new System.IO.FileStream(fileNames, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.None);
      byte[] binFile = filea.OpenBinary();
      fs.Write(binFile, 0, binFile.Length);
      fs.Close();
      lblStatus.Text = "Выгрузка " + fileURL.ToString();
      System.IO.File.SetCreationTime(fileNames, crdatetime);
      System.IO.File.SetLastAccessTime(fileNames, crdatetime);
      System.IO.File.SetLastWriteTime(fileNames, crdatetime);
     }
   }
 

Код прекрасно работает, но только на сервере - если я открываю страницу на машине пользователя - не работает. Выяснил причину - папка и файлы создаются не на машине пользователя, а на сервере. Не могу понять - как сделать, чтоб все-таки на локальную машину можно было сохранить. Подскажите, плиз.

Всего записей: 123 | Зарегистр. 31-08-2009 | Отправлено: 09:45 24-04-2010 | Исправлено: SerBUser, 09:46 24-04-2010
v1rtyaluk



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
в консольному приложении производятся операции с файлами в окно консоли ничего не выводится.при запуске приложения окно консоли появляется где-то на секунду.Вопрос:
можно-ли запретить отображение консольного окна в моем приложении?
 
Добавлено:
и еще  
как сделать на форме radioButton неактивным?

Всего записей: 110 | Зарегистр. 10-03-2010 | Отправлено: 23:42 24-04-2010
Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
v1rtyaluk

Цитата:
как сделать на форме radioButton неактивным?

radioButton.Enabled = false;

Всего записей: 537 | Зарегистр. 05-07-2007 | Отправлено: 01:55 25-04-2010
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru