Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.06;
Скачать: CL | DM;

Вниз

NetShareAdd и скрытые ресурсы   Найти похожие ветки 

 
ALi   (2002-03-25 13:22) [0]

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


 
Tosov ©   (2002-03-25 17:27) [1]

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


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

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-26 17:15) [3]

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

PWideChar - убрал.

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


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

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


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

>как его еще конвертить-то?
Примерно так:
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-27 07:15) [6]

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



Страницы: 1 вся ветка

Текущий архив: 2002.06.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
1-17990
CHIMUMBARO
2002-05-23 20:37
2002.06.06
Люди! Срочно нужна помощь...


1-17982
Илья______
2002-05-23 21:14
2002.06.06
Чем отличается CompareStr от простого сравнения?


3-17819
lexx@demon
2002-05-15 19:45
2002.06.06
Мастера... помогите..... как поместить картинку в базу данных


14-18113
Ochen Interesno
2002-04-29 17:20
2002.06.06
IT-проекты


1-17939
allrussia
2002-05-27 04:34
2002.06.06
Как ? 2 вопроса