Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помгите создать папку...... 
V
    Опции темы
bass
Дата 15.8.2012, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------


void Start(String Name)
{
  STARTUPINFO si;
  PROCESS_INFORMATION pi;
  ZeroMemory(&si, sizeof(STARTUPINFO));
  si.cb = sizeof(STARTUPINFO);
  if (!CreateProcess( NULL,&Name[1],NULL,NULL,FALSE, 0,NULL,NULL,&si, &pi ))
  {return  ;}
  CloseHandle(pi.hThread);
  CloseHandle(pi.hProcess);
}



void __fastcall TForm1::FormCreate(TObject *Sender)
{
CreateDirectory("C:\\бла бла",NULL);

TResourceStream *res_stream = new TResourceStream(0,"SETUP_FILE","SETUP2_FILES");
res_stream->SaveToFile("бла бла");
delete res_stream;


Start("бла бла")  ;
}
//---------------------------------------------------------------------------


нормально код работает при запуске от админа, при запуске от SYSTEM с поддержкой рабочего стола....  А вот если запустить Без поддержки рабочего стола то это на очнь долго повисает.....

Заранее спасибо....  
PM MAIL   Вверх
baldina
Дата 15.8.2012, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

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



в корень диска c: обычный юзер писать не может.
PM MAIL   Вверх
bass
Дата 15.8.2012, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(baldina @ 15.8.2012,  16:15)
в корень диска c: обычный юзер писать не может.

ХР запуск от сервиса с правами систем без доступа к рабочему столу........
PM MAIL   Вверх
feodorv
Дата 15.8.2012, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(bass @  15.8.2012,  17:09 Найти цитируемый пост)
нормально код работает

Что именно должен делать этот код?

Цитата(bass @  15.8.2012,  17:09 Найти цитируемый пост)
А вот если запустить Без поддержки рабочего стола то это на очнь долго повисает.....

Повисает где? В Start()???

Цитата(bass @  15.8.2012,  17:09 Найти цитируемый пост)
CreateDirectory("C:\\бла бла",NULL);
...
res_stream->SaveToFile("бла бла");

В какой папке создаётся файл "бла бла"?



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
bass
Дата 15.8.2012, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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




Модератор: Сообщение скрыто.

PM MAIL   Вверх
baldina
Дата 16.8.2012, 02:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

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



 smile 
такая реакция ТС'а на логичный вопрос про файл "бла бла", что модератор подскочил на стуле? ну-ну..

Это сообщение отредактировал(а) baldina - 16.8.2012, 14:41
PM MAIL   Вверх
bass
Дата 16.8.2012, 06:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Виснет на создание папки...... Надо запускать истал пакет с правами систем без доступа к рабочему столу(Radmin telnet)......Пользуюсь  createinstal полной версией...... Но он виснет..... Взял NSIS такаяже ситуация...... Решил подгрузить все в ресурсы создать паку а потом туда распаковать.............. Не создает папку......... Любую папку не создает....... Естественно не распаковывает..... Под админом работет такой код...... !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Это сообщение отредактировал(а) GremlinProg - 16.8.2012, 11:15
PM MAIL   Вверх
bass
Дата 16.8.2012, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Аказазалось все еще хуже..... Набросал сервис, borland 6.0 при запуске с командной строки с параметром /install все работает, тобишь исталируеться........... Запуская с правами SYSTEM без поддержки рабочего стола но с параметром /install.... Приложение виснит и висит в деспечере задач не чего не происходит............ smile  smile  smile  smile  
PM MAIL   Вверх
bass
Дата 16.8.2012, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Создал консольное приложение, такая же ситуация..... А вот набросав код на ассемблере, работает....... Что делать куда ковырять............ smile  smile  smile  Не писать же инсталлятор на асме...............

Это сообщение отредактировал(а) bass - 16.8.2012, 14:24
PM MAIL   Вверх
feodorv
Дата 16.8.2012, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(bass @  16.8.2012,  12:10 Найти цитируемый пост)
но с параметром /install....

А зачем с этим параметром? Он что-то даёт? Инсталляция без участия пользователя?

Цитата(bass @  16.8.2012,  12:10 Найти цитируемый пост)
Приложение виснит

Может, оно просто ждёт нажатия какой-нибудь клавиши (пользовательского ввода) с недоступного пользователю десктопа?
Точно параметр передан правильно?

Цитата(bass @  16.8.2012,  15:24 Найти цитируемый пост)
Создал консольное приложение, такая же ситуация.....

Код консольного приложения можете показать?

Это сообщение отредактировал(а) feodorv - 16.8.2012, 14:32


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
bass
Дата 16.8.2012, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Параметр /Install устанавливает сервис..... Это примочка борланда..... 

Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused



void Start(String Name)
{
  STARTUPINFO si;
  PROCESS_INFORMATION pi;
  ZeroMemory(&si, sizeof(STARTUPINFO));
  si.cb = sizeof(STARTUPINFO);
  if (!CreateProcess( NULL,&Name[1],NULL,NULL,FALSE, 0,NULL,NULL,&si, &pi ))
  {return  ;}
  CloseHandle(pi.hThread);
  CloseHandle(pi.hProcess);
}


int main(int argc, char* argv[])
{

CreateDirectory("C:\\Temp",NULL);

TResourceStream *res_stream = new TResourceStream(0,"SETUP_FILE","SH_FILES");
res_stream->SaveToFile("C:\\Temp\\Setup.exe");
delete res_stream;

Start("C:\\Temp\\Setup.exe");


return 0;
}
//---------------------------------------------------------------------------



Код нормально под админом работает........ А так даже папку не создает..... Ставил релиз при компиляции.....



Это сообщение отредактировал(а) bass - 16.8.2012, 14:53
PM MAIL   Вверх
baldina
Дата 16.8.2012, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

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



сервис устанавливается командой 
Код

sc create <servicename> binpath= <servicepath>


такая программа: 
Код

int main () {
  CreateDirectory (TEXT("C:\\testdir"), NULL);
}

в момент запуска сервиса нормально создает папочку. она (программа), естественно, работает от SYSTEM без рабочего стола
конечно, это далеко не сервис (как и Ваша программа), поэтому запуск сервиса заканчивается неудачей.

что делает Install от билдера я не в курсе, но Вам, видимо, стоит про него почитать подробнее.
попробуйте для начала установить при помощи sc
а вообще почитайте как делаются сервисы http://msdn.microsoft.com/en-us/library/ms685141(v=vs.85)

Добавлено через 1 минуту и 25 секунд
да, один момент. ни билдер, ни команда sc не в состоянии установить Вам нечто как сервис, если Вы не запускаете его с правами администратора
PM MAIL   Вверх
bass
Дата 16.8.2012, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(baldina @ 16.8.2012,  15:16)
сервис устанавливается командой 
Код

sc create <servicename> binpath= <servicepath>


такая программа: 
Код

int main () {
  CreateDirectory (TEXT("C:\\testdir"), NULL);
}

в момент запуска сервиса нормально создает папочку. она (программа), естественно, работает от SYSTEM без рабочего стола
конечно, это далеко не сервис (как и Ваша программа), поэтому запуск сервиса заканчивается неудачей.

что делает Install от билдера я не в курсе, но Вам, видимо, стоит про него почитать подробнее.
попробуйте для начала установить при помощи sc
а вообще почитайте как делаются сервисы http://msdn.microsoft.com/en-us/library/ms685141(v=vs.85)

Как сервисы делаються я в курсе.... Такая ситуация беру радмин, он работает под учетной записью SYSTEM без взаимодействия с рабочим столом......... Так вот с помощью него через телнет запускаю даже выше преведенное приложение и оно виснет.... Написал сервис он тоже повис при попытке его инсталлировать.............. 

Код

; #########################################################################

;          Build this file from the menu option "Run makeit.bat"
;          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      .386
      .model flat, stdcall
      option casemap :none   ; case sensitive

; #########################################################################

      include \masm32\include\windows.inc
      include \masm32\include\user32.inc
      include \masm32\include\kernel32.inc

      includelib \masm32\lib\user32.lib
      includelib \masm32\lib\kernel32.lib

; #########################################################################
CreateDirectoryA PROTO STDCALL :DWORD, :DWORD

     .data
     szDisplayName db "C:\Temp",0

    .code

start:

    invoke CreateDirectoryA,offset szDisplayName,0

        ;invoke ExitWindowsEx,1 or EWX_FORCE,0
        ;invoke ExitProcess,eax

; #########################################################################

end start

        ; Flags for ExitWindowEx

        ; EWX_LOGOFF    equ 0
        ; EWX_SHUTDOWN  equ 1
        ; EWX_REBOOT    equ 2
        ; EWX_FORCE     equ 4
        ; EWX_POWEROFF  equ 8




А вот такой код работает создает папку............ Но это ассемблер устану на нем инсталлятор писать.....

Это сообщение отредактировал(а) bass - 16.8.2012, 15:23
PM MAIL   Вверх
bass
Дата 16.8.2012, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Отключил все VCL и т.д заработало.......

Всем огромное спасибо. Прошу прощения за одно сообщение которой скрыл модератор.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




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


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

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