Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

NetShareAdd и скрытые ресурсы [D4, NT4]


ALi ©   (2002-03-25 13:22:00) 

Здравия желаю!
Сабж при попытку создать скрытый ресурс (напр. TEST$) ругается ошибкой Access Denied. Пользователь имеет права администратора. Ресурсы без $ создаются и удаляются нормально.
Кто знает где грабли?


ALi   (2002-03-27 07:15:00) [1]

Спасибо Андрей все заработало!


Tosov   (2002-03-27 00:51:00) [2]

>как его еще конвертить-то?
Примерно так:
var
Text:PChar; //String,array of Char,TCaption
wText : PWideChar;
Size:Cardinal;
begin
size := SizeOf (WideChar) * Length (text)+1;
GetMem (wText, Size);
wText := StringToWideChar (Text, wText, Length (Text) + 1);


и где-нибудь потом
FreeMem(wText);


ALi   (2002-03-26 18:20:00) [3]

Похоже преобразование типов TCaption > PWideChar (у меня путь и имя берутся из TEdit) производится криво - получается белиберда типа ???$@^$, как его еще конвертить-то?
А код действительно рабочий.
и последним замечанием полностью согласен :-)


Tosov   (2002-03-26 17:15:00) [4]

Этот код на D6 работает, если не считать мелочей -
UserInf.shi2_path:="C:\TEST";
UserInf.shi2_netname:="TEST$";

PWideChar - убрал.

Если ты делаешь вывод о неработоспособности кода по ShowMessage(SysErrorMessage(GetLastError));
то надо проверять не GetLastError, а результат функции (F)


ALi   (2002-03-26 15:30:00) [5]

To Tosov
Вот код:

.....
Type
Share_INFO_2= record
shi2_netname:PWideChar;
shi2_type:DWORD;
shi2_remark:LPTSTR;
shi2_permissions:DWORD;
shi2_max_uses:DWORD;
shi2_current_uses:DWORD;
shi2_path:PWideChar;
shi2_passwd:LPTSTR;
end;
PShare_INFO_2 = ^Share_INFO_2;
LPShare_INFO_2 = ^Share_INFO_2;

SHARE_INFO_502 =record
shi502_netname: PCHAR;
shi502_type: DWORD;
shi502_remark: PCHAR;
shi502_permissions: DWORD;
shi502_max_uses: DWORD;
shi502_current_uses: DWORD;
shi502_path: PCHAR;
shi502_passwd: PCHAR;
shi502_reserved: DWORD;
shi502_security_descriptor: PSECURITY_DESCRIPTOR;
end;
PSHARE_INFO_502= ^SHARE_INFO_502;
LPSHARE_INFO_502=^SHARE_INFO_502;


const

STYPE_DISKTREE = $0001;
ACCESS_READ = $0001;

var
Form1: TForm1;
F:Cardinal;
function NetShareAdd(
Server : PwideChar;
level : cardinal;
Buf : Pointer;
var Parm_Err : DWORD):Cardinal;stdcall; external "netapi32.dll" name "NetShareAdd";

function NetShareDel(
Server : PwideChar;
NetName : PwideChar;
Reserved : DWORD): Cardinal;stdcall; external "netapi32.dll" name "NetShareDel";

Implementation
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
buf:Pointer;
UserInf:Share_INFO_2;
UserInf502:Share_INFO_502;
err:dWord;
begin

err:=0;
f:=0;
UserInf.shi2_netname:=PWideChar("TEST$");
UserInf.shi2_type:=0;
UserInf.shi2_remark:="";
UserInf.shi2_permissions:=1;
UserInf.shi2_max_uses:= 1;
UserInf.shi2_current_uses:=0;
UserInf.shi2_path:=PWideChar("C:\TEST");
UserInf.shi2_passwd:=nil;

GetMem(Buf ,sizeof(UserInf));

F:=NetSHAREAdd(nil,2,@UserInf,err);
ShowMessage(IntToStr(F));
ShowMessage(SysErrorMessage(GetLastError));
FreeMem(Buf);

end;


procedure TForm1.Button2Click(Sender: TObject);
begin
NetShareDel(nil,PWideChar("TEST$"),0);
ShowMessage(IntToStr(F));

end;


Tosov   (2002-03-25 17:27:00) [6]

Покажи код создания сетевика. У меня с $ все работает нормально.


Наверх

Титульная страница Поиск, карта сайта Написать письмо