Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 121
1

Скомпилированная программа не меняет системное время

21.11.2012, 10:39. Показов 1561. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Вопрос в следующем, хотя я и не знаю как его задать: при включенном дебагере программа изменяет системное время на ура. Когда я запускаю скомпилированный файл, то ничего не происходит, при тех же действиях системное время не меняется.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2012, 10:39
Ответы с готовыми решениями:

Программа, скомпилированная в Visual Studio 2015, не работает в Windows XP
Стоит 2015 студия на семерке, проект WPF Net 4.5 Скидываю полученный exe на XP появляется такая...

Программа, скомпилированная по всем правилам генерирует исключения на других машинах
Здравствуйте, уважаемые форумчане! Хочу задать вам один вопрос. Я написал программу на C# в...

Изменить системное время
Добрый вечер, форумчане. Есть задача изменить системное время, данный код работает, но почему то...

Как изменить системное время
Как изменить системное время?

12
124 / 124 / 17
Регистрация: 30.06.2010
Сообщений: 478
21.11.2012, 12:07 2
Попробуйте запустить от имени администратора.
0
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 121
21.11.2012, 12:25  [ТС] 3
Ну, студия у меня запущена и так от имени администратора, то компилирует , я тоже думаю что от имени администратора.
0
124 / 124 / 17
Регистрация: 30.06.2010
Сообщений: 478
21.11.2012, 12:28 4
при включенном дебагере программа изменяет системное время на ура
При включенном дебагере работает.
Когда я запускаю скомпилированный файл, то ничего не происходит
То есть вы запускаете не через студию, раз он уже скомпилированный.

Подробнее:
1. ПКМ на скомпилированном файле.
2. Запуск от имени Администратора.
0
543 / 544 / 181
Регистрация: 16.03.2012
Сообщений: 1,160
Записей в блоге: 2
21.11.2012, 12:32 5
Цитата Сообщение от BigOblom Посмотреть сообщение
Подробнее:
1. ПКМ на скомпилированном файле.
2. Запуск от имени Администратора.
Вы еще думаете, что существуют люди, учащиеся программированию, и работающие в Виндоус не под Админом?
0
1 / 1 / 0
Регистрация: 21.11.2012
Сообщений: 11
21.11.2012, 12:39 6
Цитата Сообщение от buntar Посмотреть сообщение
Вы еще думаете, что существуют люди, учащиеся программированию, и работающие в Виндоус не под Админом?
Так вроде как, если сидишь даже под админом, приложения все равно запускаются без прав администратора. Только если явно не указать в свойствах файла, ну или как BigOblom показал.
0
543 / 544 / 181
Регистрация: 16.03.2012
Сообщений: 1,160
Записей в блоге: 2
21.11.2012, 12:45 7
Цитата Сообщение от BlackLacost Посмотреть сообщение
Так вроде как, если сидишь даже под админом, приложения все равно запускаются без прав администратора. Только если явно не указать в свойствах файла, ну или как BigOblom показал.
Да что вы?! А зачем тогда по вашему в ОС используются типы учетных записей? - просто так?
0
124 / 124 / 17
Регистрация: 30.06.2010
Сообщений: 478
21.11.2012, 12:51 8
Цитата Сообщение от buntar Посмотреть сообщение
Вы еще думаете, что существуют люди, учащиеся программированию, и работающие в Виндоус не под Админом?
Ключевое слово "учащиеся". И почему вы так уверены, что прям все программисты сидят под админом. Я знаю несколько людей лично, которые имеют несколько учеток и программируют не в админской записи по своим каким-либо личным соображениям.
0
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
21.11.2012, 13:14 9
Цитата Сообщение от buntar Посмотреть сообщение
Вы еще думаете, что существуют люди, учащиеся программированию, и работающие в Виндоус не под Админом?
Цитата Сообщение от buntar Посмотреть сообщение
Да что вы?! А зачем тогда по вашему в ОС используются типы учетных записей? - просто так?
Вам не знакомо слово UAC?
Если программа не умеет запрашивать права администратора(и исполняемый файл не помечен, как требующий повышенных прав), она будет выполняться как будто от обычного пользователя, даже если запущена пользователем из группы "админстраторы".
Вся разница в том, что администратор может запустить программу с повышенными правами не вводя пароль, а обычный пользователь должен будет дополнительно авторизоваться.
2
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 121
22.11.2012, 11:43  [ТС] 10
ничего не происходит даже на правах администратора

Добавлено через 27 минут
так же в программе есть изменение даты, и с ней те же проблемы: при дебагере работает, при запуске скомпилированной(и на правах админа) - не работает

Добавлено через 21 час 2 минуты
Разве никто не знает ответа? Программа для изменения системного времени рабочая, код правильный. При дебагере программа работает, а от уже скомпилированная - нет, даже на правах администратора
0
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
22.11.2012, 12:35 11
скорее всего проблема в том, что при включенном дебаге между выполнением определённых команд проходит некоторое время. при запуске скомпелированной - всё выполняется почти мгновенно.

В чем именно ошибка сказать невозможно, т.к. не только не был приведён код, даже не упоминались классы, чьи экземпляры/методы использовались.
0
124 / 124 / 17
Регистрация: 30.06.2010
Сообщений: 478
22.11.2012, 12:51 12
Скинуть можешь сорцы?
0
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 121
24.11.2012, 16:17  [ТС] 13
Вот код. Программа срабатывает при клике на кнопку "Save".
Я в отчаянии

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
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
 
namespace _2_Alarm
{
    public partial class Form1 : Form
    {
        #region 'vars'
        Timer tm = new Timer();
        DateTimePicker dtp1 = new DateTimePicker();
        MonthCalendar mc = new MonthCalendar();
        GroupBox gb1 = new GroupBox();
        CheckBox chb = new CheckBox();
        GroupBox gb2 = new GroupBox();
        Label lb1 = new Label();
        TextBox tb1 = new TextBox();
        GroupBox gb3 = new GroupBox();
        Label lb2 = new Label();
        DateTimePicker dtp2 = new DateTimePicker();
        Button btn1 = new Button();
        Button btn2 = new Button();
        NotifyIcon alarmIcon = new NotifyIcon();
        string alarmTime = "";
 
        WMPLib.WindowsMediaPlayer player = new WMPLib.WindowsMediaPlayer();
 
            #region 'changing time'
            [StructLayout(LayoutKind.Sequential)]
            public struct SYSTEMTIME
            {
                public short wYear;
                public short wMonth;
                public short wDayOfWeek;
                public short wDay;
                public short wHour;
                public short wMinute;
                public short wSecond;
                public short wMilliseconds;
            }
 
            [System.Runtime.InteropServices.DllImportAttribute("kernel32.dll", EntryPoint="SetSystemTime")]
                [return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)]
            public static extern  bool SetSystemTime([InAttribute()] ref SYSTEMTIME lpSystemTime) ;        
            #endregion
 
            #region 'Play sound'
            [System.Runtime.InteropServices.DllImport("winmm.dll", CallingConvention = CallingConvention.Cdecl)]
            private static extern
              Boolean PlaySound(string lpszName, int hModule, int dwFlags);
            #endregion
 
        #endregion
 
        public Form1()                  // Конструктор формы
        {
            InitializeComponent();
            this.AutoSize = true;
            this.SuspendLayout();
 
            tm.Interval = 1000;
            tm.Tick += new EventHandler(tm_Tick);
            tm.Enabled = true;            
 
            dtp1.Name = "dateTimePicker1";
            dtp1.Format = DateTimePickerFormat.Time;
            dtp1.Font = new System.Drawing.Font(this.Font, FontStyle.Bold);
            dtp1.ShowUpDown = true;
            dtp1.Location = new Point(10, 10);
            dtp1.Size = new System.Drawing.Size(165,50);
            
            mc.Name = "monthCalendar";
            mc.TitleForeColor = Color.White;
            mc.TitleBackColor = Color.DarkCyan;
            mc.Location = new Point(10, 35);
 
            #region 'First groupBox'
            gb1.Name = "groupBox1";
            gb1.Size = new System.Drawing.Size(150, 50);
                       
            chb.Name = "checkBox";
            chb.Text = "Change current time";
            chb.Location = new Point(20, 20);
            chb.Size = new System.Drawing.Size(125, 20);
            chb.CheckedChanged += new EventHandler(chb_CheckedChanged);
            
            gb1.Controls.Add(chb);
            gb1.Text = "Change time";
            gb1.Location = new Point(200, 10);
            #endregion
 
            #region 'Second groupBox'
            gb2.Name = "groupBox2";
            gb2.Size = new System.Drawing.Size(150, 50);
            gb2.Location = new Point(200, 60);
 
            lb1.Name = "label1";
            lb1.Text = "Time(min):";
            lb1.Location = new Point(5, 15);
            lb1.Size = new System.Drawing.Size(55, 15);            
 
            tb1.Name = "textBox1";
            tb1.Location = new Point(60, 15);
            tb1.Size = new System.Drawing.Size(80,15);
 
            gb2.Text = "Alarm";
            gb2.Controls.Add(lb1);
            gb2.Controls.Add(tb1);
            #endregion
 
            #region 'Third groupBox'
            gb3.Name = "groupBox3";
            gb3.Location = new Point(200, 120);
            gb3.Size = new System.Drawing.Size(150, 60);
            
            lb2.Name = "label2";
            lb2.Text = "New date:";
            lb2.Location = new Point(5, 15);
            lb2.Size = new System.Drawing.Size(60, 15);
 
            dtp2.Name = "dateTimePicker2";
            dtp2.Location = new Point(5, 35);
            dtp2.Size = new System.Drawing.Size(125, 15);
 
            gb3.Text = "Change date";
            gb3.Controls.Add(lb2);
            gb3.Controls.Add(dtp2);
            #endregion
 
            btn1.Name = "button1";
            btn1.Text = "Save";
            btn1.TextAlign = ContentAlignment.MiddleCenter;
            btn1.Location = new Point(10, 210);
            btn1.Size = new Size(150, 20);
            btn1.Click += new EventHandler(saveBtn_Click);
 
            btn2.Name = "button2";
            btn2.Text = "Exit";
            btn2.TextAlign = ContentAlignment.MiddleCenter;
            btn2.Location = new Point(180, 210);
            btn2.Size = new Size(150, 20);
            btn2.Click += new EventHandler(exitBtn_Click);
 
            alarmIcon.Icon = new Icon("../../alarm.ico");
            alarmIcon.Visible = false;
            
            this.Controls.Add(btn2);
            this.Controls.Add(btn1);
            this.Controls.Add(gb3);
            this.Controls.Add(gb2);
            this.Controls.Add(gb1);
            this.Controls.Add(mc);
            this.Controls.Add(dtp1);
            this.ResumeLayout();
            
        }
 
        void chb_CheckedChanged(object sender, EventArgs e)
        {
            tm.Enabled = chb.Checked ? false : true;
        }
 
        void saveBtn_Click(object sender, EventArgs e)
        {
            if (!(dtp2.Value.Day == DateTime.Now.Day && dtp2.Value.Month == DateTime.Now.Month && dtp2.Value.Year == DateTime.Now.Year))        //  Условие для звонка
            {
                SYSTEMTIME st = new SYSTEMTIME();
                int diffHour = DateTime.Now.Hour - DateTime.UtcNow.Hour;
                st.wYear = (short)dtp2.Value.Year;
                st.wMonth = (short)dtp2.Value.Month;
                st.wDay = (short)dtp2.Value.Day;
                st.wHour = (short)(DateTime.Now.Hour - diffHour);
                st.wMinute = (short)DateTime.UtcNow.Minute;
                st.wSecond = (short)DateTime.UtcNow.Second;
 
                SetSystemTime(ref st);
                mc.TodayDate = DateTime.Now;            
            }
 
            if (chb.Checked)                                            //  Условие для изменения системного времени
            {
                string[] tmp = dtp1.Text.Split(':');
 
                tmp[0] = DateTime.UtcNow.Hour.ToString();
 
                SYSTEMTIME st = new SYSTEMTIME();
                st.wYear = (short)DateTime.Now.Year;
                st.wMonth = (short)DateTime.Now.Month;
                st.wDay = (short)DateTime.Now.Day;
                st.wHour = Convert.ToInt16(tmp[0]);
                st.wMinute = Convert.ToInt16(tmp[1]);
                st.wSecond = Convert.ToInt16(tmp[2]);
 
                SetSystemTime(ref st);
                dtp1.Text = DateTime.Now.ToLongTimeString();
 
                chb.Checked = false;
            }
 
            if (tb1.Text != "")
            {
                string minutesStr = tb1.Text.Trim();
                int minutes = 0;
                bool isMinutes = int.TryParse(minutesStr, out minutes);
                if (isMinutes)
                {
                    if (DateTime.Now.Minute.CompareTo(minutes) < 0)
                    {
                        alarmIcon.Visible = true;
                        MessageBox.Show("Alarm sets");
                        tb1.Text = "";
                        alarmTime = minutesStr;
                    }
                }
            }
        }
 
        void exitBtn_Click(object sender, EventArgs e)
        {
            player.controls.stop();
            player.close();
                
            alarmIcon.Visible = false;
            this.Close();           
        }
 
        void tm_Tick(object sender, EventArgs e)
        {
            dtp1.Text = DateTime.Now.ToLongTimeString();
 
            if (alarmTime != "")
            {
                int minutes = int.Parse(alarmTime);
                if (DateTime.Now.Minute.CompareTo(minutes) == 0)
                {
                    string path_prt1 = Path.GetDirectoryName(Path.GetDirectoryName(Application.StartupPath));
                    
                    string path = path_prt1 + "\\ring.mp3";
                    player.URL = path;
                    player.controls.play();
                    alarmIcon.Visible = false;
                    alarmTime = "";
                }
            
            }
        }
 
    }
}
0
24.11.2012, 16:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.11.2012, 16:17
Помогаю со студенческими работами здесь

Как программно поменять системное время
Подскажите, как программно поменять системное время. В Delphi знаю как, а как это сделать в C#?...

Как узнать, что пользователь отмотал системное время назад
Добрый день! Подскажите самый простой способ узнать, что пользователь отмотал системное время...

Программа подачи компьютеру сигнала shutdown в определенное системное время
Доброго времени суток) Прошу помощи в написании маленькой программки. Программа должна подавать...

Какой код надо прописать в Delphi (задать таймер на 30 дней (системное время,год,м) программа закрывается
год, Месяц, день программа закрывается после компеляции осталась время неизменно Надо чтобы в...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru